Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Benutzung von SSH-Agenten

Die Verwendung eines SSH-Agenten macht es überflüssig, dass bei jedem Aufruf des Programms ssh die (üblicherweise lange und komplexe) Passphrase eingetippt werden muss.

In einem Initialisierungsvorlauf für SSH wurden die Schlüsselpaare erzeugt, in den lokalen Dateien abgelegt und die öffentlichen Schlüssel an die Kommunikationspartner verteilt. Zu Beginn einer interaktiven Session bzw. am Anfang eines Scripts wird der SSH-Agent mittels eines Aufrufs des Kommandos ssh-agent (siehe http://www.openssh.com) gestartet. Dann werden ihm die notwendigen privaten Schlüssel mittels ssh-add übergeben. Der SSH-Agent führt diese privaten Schlüssel im Speicher in entschlüsselter Form. Für diesen Entschlüsselungsprozess benötigt er die Passphrasen, falls welche spezifiziert wurden.

Von nun an bis zu seiner Beendigung kontaktieren SSH-Clients den SSH-Agenten automatisch für alle Schlüssel-bezogenen Operationen. Wenn mittels eines ssh-Aufrufs eine remote Verbindung eingerichtet werden soll, führen der lokale SSH-Agent und der remote sshd-Dämon automatisch die erforderliche Authentifizierungsprozedur durch.

Wenn eine Passphrase verwendet wird, muss sie nur einmal eingegeben werden. Sie wird von ssh-add vom aktuellen Terminal gelesen, falls ssh-add vom Terminal gestartet wurde. Wenn ssh-add kein ihm zugeordnetes Terminal besitzt, aber die Variablen DISPLAY und SSH_ASKPASS gesetzt sind, wird das durch SSH_ASKPASS spezifizierte Programm ausgeführt und ein X11-Window zum Lesen der Passphrase geöffnet. Dies ist nützlich wenn ssh-add in einer .Xsession oder in einem Startup-Script aufgerufen wird.

Beispiel

ssh-keygen -b 1024 -t rsa -C <comment> -N "<passphrase>"
# Erzeugt einen 1024 bit RSA key in SSH Version 2 geschützt durch eine
Passphrase
ssh-agent /bin/csh # Als Argument kann der Pfad auf eine Shell oder ein Shell Script angegeben werden
ssh-add # Lädt standardmäßig alle Schlüssel der Identity-Datei

Es müssen die Umgebungsvariablen, die auf den Socket des SSH-Agenten zeigen, gesetzt werden, damit der SSH-Client mit dem Agenten kommunizieren kann. Das Programm ssh-agent liefert hierfür bei seiner Rückkehr die notwendige Information:

Beispiel

# In SSH Version 2 Notation:
SSH2_AUTH_SOCK=/tmp/ssh-JGK12327/agent.12327; export SSH2_AUTH_SOCK;
SSH2_AGENT_PID=12328; export SSH2_AGENT_PID;

Diese Output-Kommandos des Programms ssh-agent können mittels des eval-Kommandos ausgeführt werden. Beachten Sie dabei die rückläufigen Anführungszeichen (`):

eval `ssh-agent ...`

Das eval-Kommando weist die Shell an, das Kommando ssh-agent ablaufen zu lassen und anschließend die von ihm generierten Kommandos auszuführen. Danach stehen die Shell Variablen SSH_AUTH_SOCK und SSH_AGENT_PID zur Verfügung. Nach Ausführung des Kommandos eval `ssh-agent` wird die PID des SSH-Agenten ausgegeben.

Das Kommando eval `ssh-agent` sollte in die Datei ~/.bash_profile aufgenommen werden.

Shell Scripts

Wenn SSH Shell Scripts genutzt werden sollen, kann die Installation des SSH-Agenten, das Setzen der korrekten Umgebung, und die Versorgung des Agenten mit den notwendigen Schlüsseln und Passphrasen in einer Initialisierungsphase oder in einem Startup-Script gemacht werden, bevor das Script mit den ssh-Aufrufen gestartet wird.

Zusätzlich muss das SSH-Script instrumentiert werden, um diese Werte in den Umgebungsvariablen zu setzen. Dazu muss der Output des Programms ssh-agent in einer Hilfsdatei abgespeichert worden sein, die dann im Script mittels des „Punkt“-Kommandos ausgeführt wird.

Beispiel

ssh-agent|head -2 > <auxfile> # Speichere Umgebung in Initialisierungsphase 
:
:
:
. <auxfile> # Setze Umgebung im Script