SSH Login ohne Passwort

Wie den meisten wohl bereits bekannt ist, gibt es die Möglichkeit sich an einem Linux Server via SSH anzumelden. Und zwar ohne Passwort. Wie man das ganze einrichtet möchte ich hier nun in ein paar einfachen Schritten erklären.

Für das Setup benötigen wir zwei Tools. ssh-keygen um die public und private Keys zu erstellen.
Und ssh-copy-id um den public key des Localhost in die authorized_keys auf den entfernten Server einzutragen. ssh-copy-id setzt auch gleich die richtigen Zugriffsrechte des home Verzeichnises, ~/ssh Verzeichnis und dem ~/.ssh/authorized_keys File auf dem Remote Server.

Public und private key mit ssh-keygen erstellen

Zuerst werden wir auf dem lokalen Rechner mit
ssh-keygen
einen neuen Private/public Key erzeigen. Doch vorsicht! Das sollte nur dann gemacht werden wenn noch kein Key Pair vorhanden ist, oder wenn der das alte paar ersetzt werden soll.

Bei der Erstellung wird nach dem Speicherpfad für die Key Files gefragt. Wenn nicht anders gewünscht kann man hier getrost den Default Wert behalten.
Wen die Frage nach einem Passwort kommt einfach leer lassen mit [Enter] enter bestätigen. Wenn hier ein Passwort eingetragen wird, wir dieses Passwort bei jeden Loginversuch abgefragt.

Die Ausgabe sieht wie folgt aus:

cjunky@localhost:~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/samann/.ssh/id_rsa): [mit Enter bestätigen]
Enter passphrase (empty for no passphrase): [mit Enter bestätigen]
Enter same passphrase again: [mit Enter bestätigen]
Your identification has been saved in /home/cjunky/.ssh/id_rsa.
Your public key has been saved in /home/cjunky/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9AdJrtwPLz+rc/KfoB8Ij97XOTM9oIP82fkA0Px0V64 cjunky@localhost
The key's randomart image is:
+---[RSA 2048]----+
|          .     .|
|         oo.   ..|
|        ..+o . .o|
|       o +..o ...|
|        S +...E  |
|         + *..   |
|        o = *o.o |
|       . +o**oOo.|
|        . =@**+=.|
+----[SHA256]-----+

Den Public Key auf den Server übertragen

Nachdem wir nun ein passendes Schlüsselpaar erstellt haben, oder dieses bereits besessen haben, müssen wir dem Server auf dem wir uns in Zukunft ohne Passwort anmelden wollen unseren Public Key mitteilen.

Das Kopieren des Schlüssels erfolgt mit
ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
Das Flag -i erfoder den Pfad des Public Keys, den wir (per Default) im Home Verzeichnis des Users unter .ssh/id_rsa.pub erstellt haben. Der letze Parameter ist die Adresse des Servers. Die Adresse kan als Hostname oder als IP angegeben werden.
Bei der Ausführung des Commands wird man nach dem Password des Benutzers auf dem Remote Server gefragt.

ssh-copy-id fügt den Schlüssel an das Ende der Datei .ssh/authorized_key auf dem entfernten System an.

Die Ausgabe wenn alles richtig Funktioniert hat sollte so aussehen:

cjunky@localhost$ ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
cjunky@remote-host's password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Anmeldung am Remote System ohne Passwort

Nachdem das Setup beendet ist, können wir uns nun ohne Angabe eines Passworts an dem System anmelden.

Die Eingabe von
ssh remote-host
sollte mit der Ausgabe und dem erfolgreichen Login auf dem Remote Host quittiert werden

cjunky@localhost$ ssh remote-host
Last login: Don Deb 18 19:20:33 2016 from 192.168.1.1

cjunky@remote-host$

Und das war es auch schon. In nur drei, bzw.2 einfachen Schritten zum Login ohne Passwort.
Die oben beschriebene Methode sollte in den meisten Fällen funktionieren. Zumindest funktioniert es bei mir unter Debian und Ubuntu.

Neuen Kommentar schreiben