SSH ProxyJump
1. SSH-Konfiguration für Jump Host mit AD-Anbindung
1.1. Problem
Wenn du dich über einen SSH Jump Host zu anderen Servern verbinden willst und beide Server eine AD-Anbindung via SSSD verwenden, musst du normalerweise bei jeder Verbindung das Passwort eingeben.
1.2. Lösung
Die SSH-Konfiguration nutzt ControlMaster, um SSH-Verbindungen wiederzuverwenden. Dadurch musst du das Passwort nur einmal beim ersten Verbindungsaufbau eingeben - alle weiteren Verbindungen innerhalb von 10 Minuten nutzen die bestehende Verbindung ohne erneute Passwort-Eingabe.
1.3. Wie funktioniert ControlMaster?
- ControlMaster auto: SSH erstellt automatisch eine "Master-Verbindung" beim ersten Connect
- ControlPath: Speicherort für den Socket, über den die Verbindung wiederverwendet wird
- ControlPersist 10m: Die Verbindung bleibt 10 Minuten offen, auch wenn du dich abmeldest
1.4. Neueinrichtung - Schritt für Schritt
1.4.1. 1. SSH-Config erstellen/bearbeiten
Erstelle oder bearbeite die Datei:
nano ~/.ssh/config
1.4.2. 2. Jump Host konfigurieren
Füge zuerst die Konfiguration für deinen Jump Host hinzu:
Ersetze: $USERNAME ([email protected])
Host fqdnjumphost*
Hostname fqdnjumphost.foo.de
ForwardAgent yes
ProxyJump none
Host lsw*
ProxyJump fqdnjumphost.foo.de
User [email protected]
Host *
#LogLevel DEBUG
ControlMaster auto
ControlPath ~/.ssh/.session_%h
ControlPersist 600m
1.4.3. 5. Berechtigungen setzen
SSH-Config muss die richtigen Berechtigungen haben:
chmod 600 ~/.ssh/config
1.4.4. 6. Testen
Teste die Verbindung:
ssh jumphost
Beim ersten Mal wirst du nach dem Passwort gefragt. Melde dich ab und verbinde dich erneut - jetzt sollte kein Passwort mehr nötig sein (für 10 Minuten).
1.5. Troubleshooting
1.5.1. Verbindung fragt trotzdem nach Passwort
-
Prüfe, ob ControlMaster-Socket existiert:
ls -la ~/.ssh/cm-* -
Teste die SSH-Konfiguration für einen Host:
ssh -G <hostname> | grep -E "(controlmaster|proxyjump)"controlmastersollteautosein, nichtfalse -
Lösche alte Sockets und versuche es erneut:
rm ~/.ssh/cm-*
1.5.2. ControlMaster-Verbindung beenden
Um eine bestehende Master-Verbindung manuell zu beenden:
ssh -O exit jumphost
1.5.3. Aktive ControlMaster-Verbindungen prüfen
ssh -O check jumphost
1.6. Wichtige Hinweise
- ControlPersist-Dauer: Die 10 Minuten kannst du anpassen (z.B.
1hfür 1 Stunde,30mfür 30 Minuten) - Socket-Dateien: Die Dateien
~/.ssh/cm-*sind Unix-Sockets und werden automatisch erstellt/gelöscht - Sicherheit: ControlMaster erhöht nicht das Sicherheitsrisiko, da nur dein User auf die Sockets zugreifen kann
- Mehrere Sessions: Du kannst beliebig viele SSH-Sessions gleichzeitig öffnen - alle nutzen die gleiche Master-Verbindung