SSH-Verbindungen mit RSA Keys ohne Passwort-Eingabe

Wer kennt es nicht und wen nervt es nicht: ständige SSH-Verbindungen auf diverse Server und immer wieder wird man bei jedem Login nach dem Passwort gefragt, welches man als pflichtbewusster Server-Admin natürlich möglichst kompliziert gewählt hat. Aber durch die RSA-Authentifizierung gibt es die Möglichkeit, die Passwortabfrage zu umgehen, aber dennoch eine verschlüsselte und sichere Verbindung zu haben. Für dieses Verfahren geht man wie folgt vor:

1. Generieren des Private-Key
Einfach ein Terminal-Fenster öffnen und den RSA-Token generieren mit diesem Befehl:

ssh-keygen -P yourpassword

Der Private-Key, kann übrigens natürlich auch ohne Passwort-Schutz generiert werden, für den Fall, dass Sie nicht zu der Kategorie sicherheitsbegeisterter Leute gehören. Unter OS X und unter Ubuntu liegt das eben erzeugte Key-Paar nun im Verzeichnis /Users/username/.ssh/ bereit.





2. Hinterlegen des Public-Key auf dem Server
Nun muss der Public-Key auf dem Server, mit dem Sie sich in Zukunft passwort-los einloggen möchten hinterlegt werden. Am besten kopiert man den Public-Key direkt per SCP auf den Server in die Datei /Users/username/.ssh/authorized_keys. Also ungefähr folgendermaßen:

cd /Users/username/.ssh/
scp id_rsa.pub root@domain.com:/root/.ssh/authorized_keys

Beim nächsten Login auf dem Server von diesem Rechner aus wird dann der RSA-Key erkannt und man wird nach dem für den RSA-Key gesetzten Passwort gefragt – oder auch nicht, falls man keines gesetzt hat. Unter OS X kann man das Passwort auch im Schlüsselbund speichern, dann wird man künftig direkt auf dem Server eingeloggt.

Unter Windows kann man die Software Putty benutzen, um einen entsprechendes Public-/Private-Key-Paar zu erzeugen. Aber die haben Sie ja eh installiert, wenn Sie sich unter Windows öfters per SSH mit Servern verbinden. Putty bringt einen Key-Generator mit, die Bedienung ist selbsterklärend.

Hier noch die Optionen für ssh-keygen:

ssh-keygen [-q] [-b bits] -t type [-N new_passphrase] [-C comment] [-f output_keyfile]
ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
ssh-keygen -i [-f input_keyfile]
ssh-keygen -e [-f input_keyfile]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-P passphrase] [-C comment] [-f keyfile]
ssh-keygen -l [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D reader
ssh-keygen -F hostname [-f known_hosts_file] [-l]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -R hostname [-f known_hosts_file]
ssh-keygen -U reader [-f input_keyfile]
ssh-keygen -r hostname [-f input_keyfile] [-g]
ssh-keygen -G output_file [-v] [-b bits] [-M memory] [-S start_point]
ssh-keygen -T output_file -f input_file [-v] [-a num_trials] [-W generator]