5 Wenig bekannte Features von SSH
Bo Jeanes hat einen tollen Screencast erstellt, welcher folgende Features und noch einige mehr live erklärt. Der Screencast dauert ca. 60 Minuten und stellt unzählige SSH-Features vor.
Ich stelle hier kurz meine persönlichen Highlights aus dem Video vor.
1. ProxyCommand
Angenommen ich muss auf einen Host beta zugreifen via anderen Host alpha (weil er nicht direkt erreichbar ist).Anstatt jedes Mal manuell ssh alpha gefolgt von ssh beta aufzurufen, kann man sich eine Konfiguration mit ProxyCommand in .ssh/config anlegen
welche einem diese Arbeit abnimmt. Man muss danach nur noch ssh beta eingeben um sich direkt mit dem Host zu verbinden..
Das Ganze funktioniert auch mit Port Forwards!
Proxy Command |
Eintrag in .ssh/config:
Host alpha
HostName alpha.mydomain.com
ForwardAgent yes
Host beta
Hostname beta.mydomain.com
ProxyCommand ssh alpha -W %h:%p
Meistens findet man Beispiele mit "nc" (netcat). Da dies auf Solaris nicht überall verfügbar ist, gibt es seit OpenSSH 5.4 auch eine version ohne netcat.
Hier gefunden: http://www.bsdnow.tv/tutorials/ssh-chaining
2. Dynamic Port Forwarding
Wer schon einmal extern für eine Firma ohne VPN gearbeitet hat, kennt das Problem. Um interne Hosts zu erreichen muss man sich zuerst dutzende von SSH-Tunnels graben.Doch SSH unterstützt auch einen Mechanismus welcher dynamisch Port-Forwards erstellt, das "dynamic port forwarding".
Als Befehlt lässt es sich mit so starten:
ssh -D 1080 alpha.mydomain.com
Damit wird ein lokaler SOCKS proxy auf port 1080 gestartet. Nun muss nur noch das Betriebssystem konfiguriert werden diesen Proxy zu benutzen. Danach läuft der komplette Netzwerkverkehr über alpha.
Referenz: https://www.debian-administration.org/article/449/SSH_dynamic_port_forwarding_with_SOCKS
3. SSH Console
Auch "SSH Escape Tilde" genannt.Um eine hängende SSH-Verbindung zu beenden kann man dem SSH-Client einen einfachen Befehl senden.
Nötig ist dazu die Eingabe von Tilde gefolgt von einem Punkt: ~.
Akzeptiert wird diese Eingabe nur auf einer neuen Zeile.
Die ganze Liste aller Befehle findet sich auf der manpage von ssh.
~. Disconnect.
~^Z Background ssh.
~# List forwarded connections.
~& Background ssh at logout
~? Display a list of escape characters.
~B Send a BREAK to the remote system.
~C Open command line.
~R Request rekeying of the connection
~V Decrease the verbosity
~v Increase the verbosity
4. Agent forwarding
Um einfach von einem Host zum nächsten hüpfen zu können, kann SSH die geladenen Private-Keys an den nächsten Host weiterreichen.ssh -A alpha
Der entsprechende Eintrag in .ssh/config lautet:
Host alpha
ForwardAgent yes
Der Gebrauch dieses Features sollte von einer gewissen Vorsicht begleitet werden. Falls Host alpha kompromittiert ist, könnte root auf diesem System die Agent-Verbindung ausnutzen.
Agent Forwarding kann vom Administrator eines Systems unterbunden werden mit der Direktive AllowAgentForwarding no in /etc/sshd_config.
Schön illustriert auf dieser Seite:
5. Keepalive
Wer ständig im Hintergrund SSH-Sessions offen hat, der hat sich bestimmt auch schon genervt über solche Fehlermeldungen:
[user@remote ~]$
Write failed: Broken pipe
Abhilfe bietet ein kurzer Eintrag für alle Hosts in .ssh/config:
Host *
ServerAliveInterval 60
Auch für Windows-User gibt es eine entsprechende Option in der Putty-Konfiguration.
Referenz:
https://sysadmincasts.com/episodes/39-cli-monday-how-to-keep-your-ssh-sessions-alive