SSH Agent zum Verwalten von Schlüsseln auf Linux
Beim Arbeiten mit verschlüsselten Verbindungen, muss man öfters ein Passwort eintippen. Das kann aber entfallen, wenn man diese Arbeit dem ssh-agent auf einem Linux System übergibt (auf Windows macht das der pagent aus dem putty Paket).
Bei asymetrischen Verbindungen gibt es einen öffentlichen und einen privaten Schlüssel. Während der öffentliche Schlüssel bekannt sein darf, sollte der private Schlüssel geheim gehalten werden. Der ssh-agent speichert den privaten Schlüssel, und übermittelt bei Bedarf diesen Schlüssel. Das ist gleichbedeutend mit einer Passworteingabe.
-
Läuft der ssh-agent?
Auf Ubuntu wird beim Einloggen der Agent gestartet, und lädt alle Keys aus dem ~/.ssh/ Verzeichnis des Benutzers. Man kann auch in der .profile, .bashrc oder ähnlichen Dateien den Agent starten (bitte nicht mehrfach starten).
-
Zum Testen ob der Agent läuft einfach mal ps -A | grep ssh-agent eintippen. So erfährt man auch ob der Agent mehrfach läuft.
-
Ob die Keys tatsächlich geladen werden mit ssh-add -l nachsehen. Falls die Keys nicht automatisch geladen werden, dann in der .profile oder ähnlichen Dateien, die Keys per ssh-add <Name> laden.
-
-
Schlüssel erstellen oder konvertieren
Ein Schlüsselpaar kannst du auf Linux mit ssh-keygen erstellen. Auf Windowsseite mit PuTTYgen. Beachte aber bitte, das die beiden Formate nicht kompatibel sind.Putty → OpenSSH
Die Umwandlung erfolgt mit
puttygen key.ppk -o id_rsa.pub -O public-openssh
puttygen key.ppk -o id_rsa -O private-openssh
OpenSSH → Putty Format
mit der Importfunktion der Anwendung. -
Testen
mit ssh-add -l mal schauen, ob Keys geladen werden. Dann einfach mal eine SSH Verbindung aufbauen. Es sollte kein Passwort mehr abgefragt werden
Zum Beispiel schreibt man das in die .bashrc
sa()
{
if ps -o „%p %c“ -u `id -u` |grep ssh-agent; then
set $(ps -o „%p %c“ -u $(id -u)|grep ssh-agent )
SSH_AGENT_PID=$1
export SSH_AGENT_PID
SSH_AUTH_SOCK=$(find /tmp/ -type s -name „agent.$(( $1 – 1 ))“ -uid $(id -u))
export SSH_AUTH_SOCK
echo „ssh-agent lief bereits“
else
eval $(ssh-agent )
ssh-add ~/.ssh/id_rsa
echo „ssh-agent wurde gestartet“
fi
}
so, das wars auch schon wieder. Viel mit SSH!