SSH-Agent mit Komfort
Bei der Administration vieler Unix-Server ist ssh-agent
eine große
Hilfe. Leider ist der Agent nicht wirklich selbsterklärend in der
Bedienung. Und es wird auch nicht gerade einfacher, wenn Bastion Hosts
verwendet werden.
Es gibt viele Tipps, um den Agenten in die Umgebung einzubinden, etwa mittels .profile. Für mich funktioniert die folgende, vereinfachte Vorgehensweise. In meiner .bashrc habe ich diese Funktionen definiert:
export SESSION_FILE=~/.ssh/session
function sshagent() {
eval `ssh-agent` && ssh-add .ssh/id_dsa
echo export SSH_AUTH_SOCK=$SSH_AUTH_SOCK > $SESSION_FILE
echo export SSH_AGENT_PID=$SSH_AGENT_PID >> $SESSION_FILE
chmod 600 $SESSION_FILE
}
function ssh-reconnect() {
source $SESSION_FILE
}
#[ -f $SESSION_FILE ] && ssh-reconnect
Auf dem ersten Terminal kann dann mit dem Kommando sshagent ein Agent gestartet werden, wobei einmalig die Passphrase eingegeben werden muss. Ein Login ist jetzt bereits auf alle Hosts, die den Schlüssel akzeptieren, ohne weitere Eingabe der Phrase möglich. Öffnet man ein weiteres Terminal mit einer Shell-Session, sind die notwendigen Umgebungsvariablen ntürlich nicht mehr verfügbar und müssen nun in die neue Session übernommen werden.
Da die notwendigen Angaben aber in dem „Session File” gespeichert wurden, kann bei einem erneuten Login auf dem Bastion Host mit dem Kommando ssh-reconnect wieder zu dem Agenten verbunden werden, was mit der letzten Zeile auch automatisch beim Login1) erfolgen kann.