SSH Authentifizierung per Zertifikat
Präambel
Jeder der mit mehreren Linux Hosts arbeitet und sich mehrmals am Tag per SSH durch seine Systemlandschaft hangelt, hat sich sicher schonmal am dauerndem Anmelden gestört. Außerdem macht der einfache Gebrauch von SSH es schwierig bis unmöglich Automatismen auf entfernten Rechnern zu verwenden.In meinem Falle dient der Authentifizierungsmechanismus per Zertifikat als Vorbereitung zum Einsatz von rsnapshot, einem Backuptool, dass als Server eingesetzt auch Remote Hosts per rsync backupen kann.
Voraussetzungen
System: Linux - getestet auf Ubuntu und DebianInstallierte Pakete: openssh-server
Durchführung
Zunächst loggt man sich auf die Maschine ein, von der die Verbindung aufgebaut werden soll. Als Account verwendet man den Benutzer, der auch später die Verbindung aufbauen soll. Ich gehe in diesem Falle einfach vom root aus, auch wenn es durchaus Sinn macht für spezielle Aufgaben dedizierte - nicht previligierte - Accounts zu verwenden.Im Home Verzeichnis wird überprüft ob das Verzeichnis .ssh vorhanden ist. Sollte dies nicht der Fall sein, kann man eine Verbindung per SSH aufbauen. das Verzeichnis wird dadurch automatisch erstellt und eine Datei namens known_hosts angelegt. Dieser Schritt sollte auf der Zielmaschine ebenfalls durchgeführt werde um spätere Fehlermeldungen zu vermeiden.
Nach einem Wechsel in das Verzeichnis .ssh erzeugt man nun den Schlüssel der für die Verbindung verwendet wird.
Während der Erzeugung wird nach einem Passwort gefragt, an dieser Stelle verwenden wir jedoch KEIN Passwort.
Standardmäßig wird der Schlüssel mit dem Dateinamen id_rsa angelegt. Wir übernehmen den Standard.
1 . root@hermes:~# cd .ssh/ 2 . root@hermes:~/.ssh# ssh-keygen -t rsa 3 . Generating public/private rsa key pair. 4 . Enter file in which to save the key (/root/.ssh/id_rsa): 5 . Enter passphrase (empty for no passphrase): 6 . Enter same passphrase again: 7 . Your identification has been saved in /root/.ssh/id_rsa. 8 . Your public key has been saved in /root/.ssh/id_rsa.pub. 9 . The key fingerprint is: 10 . ae:7a:03:ec:df:d1:fa:07:bf:85:98:85:d3:33:51:dc root@hermes 11 . The key's randomart image is: 12 . +--[ RSA 2048]----+ 13 . | ... | 14 . | .. E| 15 . | . | 16 . | o . | 17 . | . S o = | 18 . | o . ..= + | 19 . | . . o +o. . | 20 . | . oo o o. | 21 . | .+o.o..... | 22 . +-----------------+ 23 . root@hermes:~/.ssh#
Mit folgendem Befehl wird der Schlüssel auf den Host kopiert auf den man sich zukünftig verbinden möchte.
1 . scp id_rsa.pub <user>@<host>:.ssh/authorized_keys
User wird an dieser Stelle ersetzt durch den Benutzernamen, auf den man sich verbinden möchte.
Host wird ersetzt durch den Namen oder die IP-Adresse auf welche man sich verbinden will.
Nach abschicken des Befehls wird man noch einmal nach dem Passwort für sich verbindenen Benutzeraccount gefragt und anschließend der öffentliche Teil des Schlüssels übertragen.
Testet man nun die Verbindung durch Eingabe des Befehls
1 . ssh <host> -l <user>
oder
1 . ssh <user>@<host>
sollte man ohne erneute Eingabe eines Passworts auf sein Ziel verbunden werden.
