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 root@192.168.178.66 mkdir -p .ssh

Das sieht dann wie folgt aus:

root@debian:~# ssh root@192.168.178.66 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.
root@192.168.178.66's password: YOUR PASSWORD

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

cat .ssh/id_rsa.pub | ssh root@192.168.178.66 'cat >> .ssh/authorized_keys'

Das sieht dann ungefähr so aus:

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

Nun setzen wir noch die Zugriffsrechte um Fehler zu vermeiden:

ssh root@192.168.178.66 "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 root@192.168.178.66

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.

*

code