SSH-Key Management
Ich hatte mich in meinem Artikel Ubuntu-Login via SSH Key bereits einmal mit der grundlegenden Authentifizierung an einem Linux-System per SSH-Key beschäftigt, doch wird das ganze Thema mit der Zeit verwirrend. Spätestens dann, wenn es gilt unterschiedliche SSH Keys für mehrere Hosts oder Devices simultan zu verwalten – es musste etwas her, um die SSH Keys zu organisieren.
Genau für dieses Problem gibt es eine wirklich einfache und vor allem auch arbeitserleichternde Vorgehensweise, hier wieder einmal als ein kurzes HowTo zusammengefasst 🙂
Im .ssh-Verzeichnis des entsprechenden Arbeitsrechners wird einfach eine zusätzliche Datei angelegt
touch /[.ssh-Verzeichnis]/config
und in dieser Datei werden dann die verschiedenen SSH-Keys ( der private Teil ) hinterlegt sowie auch gleich den jeweiligen Zielsystemen zugeordnet. Pro Zielsystem wird jeweils ein eigenes SSH-Keyfile angelegt und sollte auch mit einem „sprechenden Namen“ versehen werden. Ich selbst habe mir angewöhnt, jeweils den Hostnamen des Zielsystems an das Ende des jeweiligen Keyfiles zu setzen, so kommt keine Verwirrung dazu auf.
Grundlegend wäre es somit dann bereits mit einem, hier beispielhaft dargestellten, Eintrag getan:
Host server_eins
HostName server_eins.domain
IdentityFile /[.ssh-Verzeichnis]/id_rsa_eins
Leider hat der ssh-Client die nette Angewohnheit, alle in dieser Config-Datei befindlichen Keys „durchzuprobieren“, was im Zweifel in fehlgeschlagenen Anmeldeversuchen endet. Um sich dieses Problems zu entledigen, bietet sich der IdentitiesOnly-Parameter an, welcher auf yes ( Standard wäre no ), für alle eingetragenen Zielsysteme gesetzt wird. Der entsprechende Eintrag in der Config-Datei steht in diesem Beispiel an erster Stelle:
Host *
IdentitiesOnly yes
Host server_eins
HostName server_eins.domain
IdentityFile /[.ssh-Verzeichnis]/id_rsa_eins
Host server_zwei
HostName server_zwei.domain
IdentityFile /[.ssh-Verzeichnis]/id_rsa_zwei
Um dem Ganzen dann noch den letzten, eleganten Schliff zu verleihen, kann auch noch der entsprechende User zum Zielsystem eingetragen werden. Falls also verschiedene Benutzernamen auf den entsprechenden Zielsystemen verwendet werden, sieht das Ergebnis in der dann finalen ( Beispiel- ) Config-Datei so aus:
Host *
IdentitiesOnly yes
Host server_eins
HostName server_eins.domain
User user_eins
IdentityFile /[.ssh-Verzeichnis]/id_rsa_eins
Host server_zwei
HostName server_zwei.domain
User user_zwei
IdentityFile /[.ssh-Verzeichnis]/id_rsa_zwei
Nach diesen Einträgen ist dann eine Verbindung auf beide, hier beispielhaften, Zielsysteme mit der einfachen Eingabe in der Shell wie folgt möglich:
ssh server_eins
oder eben
ssh server_zwei
Der bisher bekannte und genutzte Connection-Parameter-Kram entfällt somit komplett und nun noch das ( hoffentlich ), dem SSH-Key zugeordnete Passwort eingeben und die Verbindung steht …
Linux, Management, SSH, Ubuntu