SSH Verbindung mit privaten/öffentlichen Schlüssel

Üblicherweise kennt man einen SSH Login mit Passwort. Was ist aber, wenn es erforderlich ist, eine Verbindung ohne Password herzustellen? Hier kommt die Schlüssel-Authentifizierung ins Spiel. Bei dieser Art der Authentifizierung wird mit Schlüsseln gearbeitet. Genauer gesagt dem öffentlich- und dem privaten Schlüssel.  Wollen wir z.B., dass Server1 sich ohne Passwort Abfrage auf dem Server2 anmelden kann, so erstellen wir auf Server1 einen privaten, samt öffentlichen Schlüssel. Server2 müssen wir den öffentlichen Schlüssel mitteilen. Schauen wir uns das untere Bild mal genauer an. Server1 möchte eine SSH Verbindung nach Server2 aufbauen. Server2 schickt eine Random Antwort, die Server1 mit einer verschlüsselten Antwort wieder an Server2 zurücksendet. Wenn Server2 diese Nachricht mittels des öffentlichen Schlüssel entschlüsseln kann, ist der Client autorisiert. Bedenkt bitte, dass jeder, der im Besitz des öffentlichen Schlüssels ist, sich mit dem Server authentifizieren kann. Es sei denn der Schlüssel beinhaltet noch eine Passphrase. Sprich zum Entschlüsseln wird ein Art Passwort benötigt. Dies ist generell sinnvoll, da es die Sicherheit nochmals erhöht. Hindert aber den Ablauf eines automatischen Scripts, da es die Eingabe erfordert.

 

 

 

 

Schlüsselpaar erzeugen

Erzeugen wir nun das Schlüsselpaar auf unserem Server1. Server1 ist in diesem Fall ein Linux Server.

ssh-keygen -t rsa -b 4096

Mit diesem Befehl erzeuge ich einen Schlüssel vom Typ RSA und eine Bitlänge von 4086 bit. RSA ist das Verschlüsselungsverfahren. Je höher die Bitlänge umso sicherer die Verbindung, aber schlechter die Performance. 4096 Bit ist ein guter Mix aus Performance und Sicherheit.

Das erzeugte Schlüsselpaar existiert nun im versteckten ssh Ordner: ~/.ssh/

Den öffentlichen Schlüssel könnt ihr jetzt ganz einfach mit folgendem Befehl auf Server2 transferieren.

ssh-copy-id -i ~/.ssh/öffentlicherSchlüssel user@server2

Steht euch allerdings ssh-copy-id nicht zur Verfügung oder schlägt fehl, so könnt ihr den öffentlichen Schlüssel auch eigenständig kopieren und unter Server2 in ~/.ssh/authorized_keys abspeichern. Dort sind alle öffentlichen Schlüssel enthalten, von Clients die Zugriff mittels diesem Verfahren haben. Löscht ihr diesen Key, so hat auch der angegebene Client keinen Zugriff mehr.

 

2 Gedanken zu „SSH Verbindung mit privaten/öffentlichen Schlüssel

  1. FYI:
    This Communication overview seems to be wrong:
    https://steviesblog.de/blog/wp-content/uploads/2020/05/ssh-key-authentifizierung-1024×358.png
    The server encrypts a random message with the public key. The client decrypts the message with the private key and sends back a hash of the plain-message to the server, which checks it with the has of the original unencrypted message on its side.
    If the message would be encrypted with the private key and it would be possible to decrypted it with the public key, everyone knowing the public-key, which is … public … by name, these people could read the encrypted message.

Schreibe einen Kommentar

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