Aus diesem Thread sind ein paar interessante Funktionen und Lösungsvorschläge zur sicheren und Komfortablen Verwendung von OpenSSH hervorgegangen.
Zuerst kann man in der ~/.ssh/config Optionen fuer bestimmte Server definieren:
Host Foo HostName foo.domain.org User foobar Port 2222 Host Bar HostName bar.otherdomain.org User baron Port 3333 ForwardAgent yes IdentityFile ~/.ssh/id_bar
Weitere Optionen gibt es hier oder mit "man ssh_config"
Nun kann man mit "ssh Foo" oder "ssh Bar" direkt die Verbindung aufbauen ohne fuer jeden die kompletten Optionen angeben zu müssen. Wenn man per SSH auf vielen unterschiedlichen Rechnern unterwegs ist, wird man diese Funktionalität zu schätzen lernen.
Um dies per Autovervollständigung in der ZSH zu nutzen, genügt folgendes in der Config:
hosts=(`cat $HOME/.ssh/config | egrep '^Host.*' | sed "s/^Host[ ]*\(.*\)$/\1/"`) zstyle '*' hosts $hosts
Um die Vorzüge von OpenSSH voll auszunutzen, sollte man mit Public-Keys arbeiten und den passenden Private-Key mit einer Passphrease sichern. Wie das geht, kann man hier nachlesen.
Damit man die Passphrase nicht bei jeder SSH-Session neu eingeben muss, ist der Key-Agent zu empfehlen. Ein kleines Script, dass automatisiert den Key-Agent startet funktioniert auch super:
function prepare_ssh {
if [[ -z $SSH_AUTH_SOCK ]]; then
eval `ssh-agent`
fi
NEEDEDID=`cat ~/.ssh/id_rsa.pub | cut -d' ' -f1-2`
HAVEID=`ssh-add -L | cut -d' ' -f1-2`
echo "$HAVEID" | grep "$NEEDEDID" > /dev/null
if [[ ! $? -eq 0 ]];then
ssh-add
fi
unset NEEDEDID
unset HAVEID
}
Nun kann man mit "prepare_ssh" den Key-Agent starten und muss nur noch beim Starten des Scripts die Passphrase eingeben.
Zum Schluss muessen wir noch dem Server beibringen, dass er unser Keyfile akzeptieren soll. Normalerweise verwendet man hierzu den Befehl ssh-copy-id. Aug Systemen, auf denen dieser Befehl nicht verfügbar ist, gibt ist hier ein Script, welches diese Funktionalität nachrüstet:
function putsshkey {
cat ~/.ssh/id_rsa.pub | ssh $1 "mkdir -p ~/.ssh; \
chmod 700 ~/.ssh; \
cat - >>~/.ssh/authorized_keys; \
chmod 600 ~/.ssh/authorized_keys"
}
Hiermit kann man seinen Public-Key mit "putsshkey user@host" einfach übertragen.
Ich arbeite hier mit einem RSA-Key. Falls ein DSA-Key verwendet wird, sollte man den Dateinamen anpassen. Also ~/.ssh/id_rsa.pub duch ~/.ssh/id_dsa.pub ersetzen.


