OpenSSH Public Keys mit ssh-agent

Seit meinem kompletten Umstieg auf Linux arbeite ich noch intensiver mit der Shell, als zuvor. Doch das Jonglieren mit Passwörtern war noch nie mein Fall. Dafür gibt es natürlich eine Lösung, die direkt vom OpenSSH-Paket mitgeliefert wird: Authentifikation mit Public Keys. Möchte man also schnell auf einen Server, legt man sich eine Identität bestehend aus einem öffentlichen Schlüssel und einem geheimen privaten ohne Passwort an. Nach der Installation des Schlüssels auf dem Server gibt es nie wieder eine Passwortfrage und minutenlange Suche nach der richtigen Antwort. Doch diese Lösung ist nicht sicher genug

Gut, dass OpenSSH auch einen sicheren Weg zu unserem Ziel anbietet. Den ssh-agent. Der Agent verwaltet mit einem Passwort geschützte Identitäten, fragt aber nur beim laden dieser auch nach dem Passwort des Schlüssels. Einmal eingegeben, lässt sich der Schlüssel für einen einstellbaren Zeitraum frei verwenden.

Fügt man ein paar Zeilen zur .bashrc hinzu, lassen sich auch alle zukünftig geöffneten Terminals mit dem einmal gestarteten ssh-agent verbinden. Eine Entlastung für den aktiven Linux-Anwender. ssh-agent stellt ein Unix-Socket bereit, über das der SSH-Client sich mit der laufenden Instanz verbinden kann. Die Idee hinter den folgenden Zeilen ist, nur genau einmal ein solches Socket zu öffnen und in allen anderen Fällen das bereits vorhanden zu nutzen. Zur Installation genügt es, diese in der Datei .bashrc zu speichern.


# Setup Environment for ssh-agent
alias sshopen='rm -f "$HOME"/.ssh/`hostname`.agent ; ssh-agent -t 7200 | grep -v echo > "$HOME"/.ssh/`hostname`.agent;  source "$HOME"/.ssh/`hostname`.agent ; ssh-add'
alias sshclose='pkill -u $USER ssh-agent && echo "SSH-Agents killed."; rm -f "$HOME"/.ssh/`hostname`.agent'

if [ -e "$HOME"/.ssh/`hostname`.agent ]; then
source "$HOME"/.ssh/`hostname`.agent ;
fi

Um dieses Verhalten zu erreichen, werden die beiden neuen Befehle sshopen und sshclose definiert.
Sie bewirken genau das, was ihr Name verspricht. sshopen startet einen neuen Agenten, sshclose beendet alle Agenten. Eine kurze Abfrage bindet die Information über den Ort des Unix-Sockets in die Shellumgebung ein. Deutlich zu sehen ist auch, dass die Session des ssh-agent nach 7200 Sekunden (2 Stunden) automatisch endet. Danach muss für einen erneuten passwortfreien Zugriff der Befehl sshopen aufgerufen werden.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.