Secure shell - Tipps und Tricks

SSH Agent verwenden

Wenn man sich häufig auf verschiedene Systeme einloggt und ohnehin ein keyfile verwendet, spart man sich mit dem ssh-agent die Mühe, das Passwort immer neu eingeben zu müssen.
Man startet den ssh-agent idealerweise beim Einloggen (bash_profile) oder zu Beginn der X-Session (bevor xinit aufgerufen wird) etwa so:
eval `ssh-agent -s`
und beendet den ssh-agent dann am Ende der Sitzung etwa so:
kill `echo $SSH_AGENT_PID`
Moderne Distributionen haben das natürlich schon passend eingerichtet...

Automatisch an einen screen re-attachen

ssh -t -l user host "screen -r"
Hinweis: -t ist notwendig, um das Anfordern eines pseudo-tty zu erzwingen

scp host_a nach host_b ohne passwort wenn agent auf host_c läuft

Ist möglich, wenn man sich von host_c auf host_a per "ssh -A" einloggt und der benutzte key sowohl auf host_a und host_b in authorized_keys hinterlegt ist.
Aber Achtung! Angreifer auf host_a können diese Vermittlung des ssh-agent auf host_c ausnutzen und sich Zugriff auf alle Systeme verschaffen, für die der Key gilt!
Also nur benutzen, wenn host_a vertrauenswürdig ist!

scp und Dateien mit Leerzeichen

Die Dateinamen werden zweimal ausgewertet, einmal lokal und einmal auf dem entfernten Rechner. Dies ist erforderlich, damit Wildcards verwendet werden können.
Wird die Wildcard auf dem entfernten Rechner verwendet, muss sie also vor der lokalen Shell geschützt werden (drei mögliche Varianten):
scp user@host:'img_2*.jpg' . scp user@host:"img_2*.jpg" . scp user@host:img_2\*.jpg .
Ebenso müssen Leerzeichen in Dateinamen des entfernten Rechners entweder doppelt escaped werden, oder das Leerzeichen vor der Auswertung durch die lokale Shell geschützt werden. Folgende drei Varianten sind gültig:
scp user@host:eine\\\ datei.txt . scp user@host:'eine\ datei.txt' . scp user@host:"'eine datei.txt'" .