Passwortloser Login zwischen Linux-Servern mit SSH-Keys

Passwortloser Login zwischen Linux-Servern mit SSH-Keys

Viele Tutorials zum Thema SSH-Keys vergessen leider einen kleinen aber wichtigen Punkt, nämlich die Deaktivierung der Überprüfung des Host-Keys. Das geht in der Datei „/etc/ssh/ssh_config“ (z. B. mit dem Texteditor vi oder nano).

Dort müsst Ihr einen Eintrag nach folgendem Muster hinzufügen:

Host 0.0.0.0
StrictHostKeyChecking no

0.0.0.0 sollte natürlich durch Eure IP-Adresse ersetzt werden. Es ist auch möglich ein * für alle Hosts zu setzen.

Einrichtung des Logins per SSH-Key

Zunächst müssen wir auf dem Ursprungsserver neue Keys generieren, das geht mit dem Befehl

ssh-keygen -t rsa

und sieht dann in etwas so aus:

root@debian:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ENTER
Enter passphrase (empty for no passphrase): ENTER
Enter same passphrase again: ENTER
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vIFg3XacOwNWXCDtbKGJ64W8LEumf/1tT+iw1Kyftwk root@debian
The key's randomart image is:
+---[RSA 2048]----+
|  ....o.o        |
|   .oo o o       |
| . =o.- + .      |
|. o.+o = o       |
| ...  . S        |
|.. .     B .     |
|oo.  .  o + E .  |
|B.  . .. *.o o o |
|==..   ..o+.. o  |
+----[SHA256]-----+

Danach erstellen wir vom Ursprungsserver aus auf dem Zielserver einen neuen Ordner für die SSH-Keys mit dem Befehl

ssh [email protected] mkdir -p .ssh

Das sieht dann wie folgt aus:

root@debian:~# ssh [email protected] mkdir -p .ssh
The authenticity of host '192.168.178.66 (192.168.178.66)' can't be established.
ECDSA key fingerprint is SHA256:5hjRNiloYYdjgliSKTwIFc+1bVgTwBCkfT6nZ2Itu7w.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.178.66' (ECDSA) to the list of known hosts.
[email protected]'s password: YOUR PASSWORD

Im nächsten Schritt laden wir den SSH-Key zum Zielserver mit dem Befehl

cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'

Das sieht dann ungefähr so aus:

root@debian:~# cat .ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
[email protected]'s password: YOUR PASSWORD

Nun setzen wir noch die Zugriffsrechte um Fehler zu vermeiden:

ssh [email protected] "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

Das könnte jetzt bereits ohne Passwort klappen, ist dem nicht so, wird die Rechtevergabe das Problem lösen.

Nun können wir uns ohne Passwort am entfernten Rechner anmelden, z. B. mit

ssh [email protected]

Hinweis: Dieser Text ist urheberrechtlich geschützt.

Kaffeespenden bitte an: 0xd0803A568615A18403C3722AC6dBb3202FD14034 (Ethereum)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert