SSH Anmeldung mit Public-Key-Authentifizierung

31. August 2019 · Betriebssysteme · andreas · Kein Kommentar

Als Alternative zur “herkömmlichen” Anmeldung mit Benutzername und Kennwort gibt es auch die Möglichkeit, sich über SSH mittels einer Kombination von privatem und öffentlichem Schlüssel auf einem anderen Rechner anzumelden. Dies hat den Vorteil, daß - sobald einmal eingerichtet - eine sichere Verbindung zwischen den beiden Rechnern hergestellt werden kann, ohne daß jedesmal das Kennwort eingegeben werden muss.

Im ersten Schritt wird hierzu das Schlüsselpaar aus privatem und öffentlichem Schlüssel erzeugt:

$ ssh-keygen -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/andreas/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
...

Während die Frage nach dem Speicherort einfach mit “Enter” bestätigt werden kann, sollte die Vergabe einer Passphrase gut überlegt sein. Ohne Passphrase liegt der erzeugte Schlüssel ungeschützt am Speicherort und kann bei einem Diebstahl problemlos verwendet werden, mit Passphrase ist eine Verwendung nur mit Kenntnis eben dieser möglich.

Als Ergebnis des Befehls werden zwei Dateien erzeugt: zum einen die Datei “id_rsa”, weche den geheimen (=privaten) Schlüssel enthält und die Datei “id_rsa.pub”, in welcher der öffentliche Schlüssel gespeichert ist.

Im zweiten Schritt kann der soeben erzeugte öffentliche Schlüssel nun auf den anderen Rechner übertragen werden. Die Syntax hierzu ist “ssh-copy-id -i ~/Pfad/zur/Schlüsseldatei Benutzername@Rechnername”

$ ssh-copy-id -i /home/andreas/.ssh/id_rsa.pub remoteuser@remotehost
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/andreas/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
remoteuser@remotehost's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'remoteuser@remotehost'"
and check to make sure that only the key(s) you wanted were added.

Sofern alles funktioniert hat, wurde auf dem Zielrechner im Verzeichnis “/home/remoteuser/.ssh” eine Datei “authorized_keys” erzeugt, in welche der öffentliche Schlüssel kopiert wurde.

Ist dies erfolgt, kann die Anmeldung ab sofort mit

$ ssh -i /home/andreas/.ssh/id_rsa remoteuser@remotehost

durchgeführt werden, wobei hier der private Schlüssel angegeben werden muss. Sofern beim Speichern des Schlüsselpaares die Vorgabewerte für den Namen übernommen wurden, kann die Angabe des Schlüssels entfallen, so daß die Anmeldung einfach über

$ ssh remoteuser@remotehost

möglich ist. Sofern beim Erzeugen des Schlüssels eine Passphrase vergeben wurde, wird diese bei Zugriff auf den Schlüssel abgefragt.