# Einrichtung eines sicheren SSH-Zugangs für Proxmox und LXC

Das Ziel ist es, ein einheitliches, schlüsselbasiertes Authentifizierungsmodell sowohl für den Proxmox-Host als auch für seine Container aufzubauen:

* keine SSH-Root-Anmeldung
* keine Passwortauthentifizierung
* Zugriff nur über einen `admin`-Benutzer mit einem SSH-Schlüssel
* bequemer Zugriff über die SSH-Konfiguration

Dieser Ansatz reduziert die Angriffsfläche und macht alles deutlich einfacher zu verwalten.

---

## Teil 1: Bereite deinen lokalen Rechner vor

### Generiere ein SSH-Schlüsselpaar

Falls du noch keins hast:

```bash
ssh-keygen -t ed25519 -C "admin"
```

Speichere es sicher, zum Beispiel hier:

```
/home/deinname/.ssh/admin_key
```

### Optional: Füge den Schlüssel zum Agenten hinzu

Wenn der Schlüssel eine Passphrase hat:

```bash
ssh-add /home/deinname/.ssh/admin_key
```

---

## Teil 2: Sichere den Proxmox-Host

### Erstelle einen Administratorbenutzer

Auf dem Proxmox-Host (über Web-Shell oder SSH):

```bash
adduser admin
usermod -aG sudo admin
```

### Stelle den SSH-Schlüssel bereit

```bash
ssh-copy-id -i /home/deinname/.ssh/admin_key.pub admin@<Proxmox-Hostname>
```

Teste den Zugriff:

```bash
ssh -i /home/deinname/.ssh/admin_key admin@<Proxmox-Hostname>
```

### Deaktiviere die unsicheren Authentifizierungsmethoden

Bearbeite `/etc/ssh/sshd_config`:

```
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
```

Wende die Änderungen an:

```bash
systemctl restart sshd
```

Der Host akzeptiert jetzt nur noch schlüsselbasierte Anmeldungen für den `admin`-Benutzer.

---

## Teil 3: Sichere deine LXC-Container

Viele Vorlagen erlauben SSH-Zugriff als Root – teilweise sogar mit Passwort. Wende dieselben Sicherheitsmaßnahmen in jedem Container an.

### Erstelle einen Administratorbenutzer

Gehe in den Container:

```bash
pct enter <CTID>
```

Lege den Benutzer an und gib ihm sudo-Rechte:

```bash
adduser admin
usermod -aG sudo admin
```

### Stelle deinen Schlüssel im Container bereit

Auf deinem lokalen Rechner:

```bash
ssh-copy-id -i /home/deinname/.ssh/admin_key.pub admin@<lxc-ip-oder-hostname>
```

Teste:

```bash
ssh admin@<lxc-ip-oder-hostname>
```

### Deaktiviere die unsicheren Methoden im Container

Bearbeite `/etc/ssh/sshd_config`:

```
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
```

Starte neu:

```bash
sudo systemctl restart sshd
```

Der Container hat jetzt exakt dieselbe Sicherheitsstufe wie der Host.

---

## Teil 4: Mach dir das Leben mit der lokalen SSH-Konfiguration leichter

Erstelle oder bearbeite die Datei:

```
~/.ssh/config
```

Beispiel-Inhalt:

```
Host proxmox
    HostName <Proxmox-Hostname>
    User admin
    IdentityFile /home/deinname/.ssh/admin_key

Host lxc-admin
    HostName <lxc-ip-oder-hostname>
    User admin
    IdentityFile /home/deinname/.ssh/admin_key
```

Schütze die Datei:

```bash
chmod 600 ~/.ssh/config
```

Ab jetzt reicht:

```bash
ssh proxmox
ssh lxc-admin
```

---

## Ergebnis

* Proxmox-Host und alle Container nutzen dieselbe sichere Anmeldemethode.
* Root-Login ist überall deaktiviert.
* Passwort-Authentifizierung ist überall aus.
* Ein einziger Schlüssel + ein einziger Benutzer (`admin`) für den administrativen Zugriff.
* Super einfache Verbindung über sprechende Host-Namen in der SSH-Konfiguration.