Wenn Ihr mehrere Linux Server in eurer Obhut habt und diese pflegen dürft, kennt Ihr sicher das Problem der verschiedenen SSH-Keys für verschiedene Kunden, Umgebungen oder aus Sicherheitsaspekten. Nun gibt es natürlich mehrere Lösungsansätze, ein Ansatz kann sein, den Putty Agent (unter Windows) zu verwenden. Wenn man aber über einen Linuxclient arbeitet oder einen solchen im privaten Umfeld nutzt, wird es schwierig. Natürlich gibt es auch hier mögliche Agents wie zum Beispiel keychain. Allerdings gibt es auch Möglichkeiten mit dem bereits installieren openssh-client, welche ich euch hier einmal vorstellen muss. Aus irgendwelchen Gründen ist diese Möglichkeit recht unbekannt, dass wollen wir ändern. Übrigens funktioniert diese Übergabe auch an rsync und andere bei SSH basierenden Tools.
Configfile für den SSH-Client
Mit der, im .ssh Verzeichnis des Userhome liegenden, Configfile lassen sich alle möglichen Einstellungen für den SSH Client hinterlegen, dazu gehören natürlich Verbindungseinstellungen wie etwa:
ForwardAgent yes ForwardX11 yes
Worauf ich aber eigentlich eingehen wollte, ist die Tatsache dass man natürlich auch das IdentityFile
an dieser Stelle übergeben kann, sogar an einen Hostkontext gebunden. Nehmen wir an, Ihr habt einen Key für den Host fu-solutions.de und einen anderen für weichert.it und wollt aber weder Usernamen noch das Keyfile übergeben. Ohne einen Alias einzurichten. Dazu würde der entsprechende Hostkontext in der ~/.ssh/config
wie folgt aussehen:
ForwardAgent yes ForwardX11 yes Host fu-solutions.de User Admin1 IdentityFile ~/.ssh/key-file1 Host weichert.it User Admin2 IdentityFile ~/.ssh/key-file2
Nun reicht es, die Befehlszeile ssh weichert.it
oder ssh fu-solutions.de
einzugeben und nach einer Bestätigung wird die Verbindung automatisch mit Admin2 oder Admin1 (je nach Ziel) und dem entsprechenden IdentityFile
aufgebaut. Via Host
oder Match
lassen sich die Ziele oder Umgebungen differenzieren.
# Used for connections to fu-solutions.de Host fu-solutions.de User Admin1 IdentityFile ~/.ssh/key-file1 # Used for connections to weichert.it Host weichert.it User Admin2 IdentityFile ~/.ssh/key-file2 # Used for all host with domain "domain.tld" # without an identityfile Host *.domain.tld User Admin3 # Match is used for combining host conditions.
Das soll an dieser Stelle zum Anreiz reichen, ich hoffe ich konnte euch eine neue und interessante Möglichkeit zur Organisation der SSH-Verbindungen auf einem Jumphost oder eurem Client liefern. Weitere Informationen zu den Möglichkeiten und möglichen Konfigurationsparametern findet Ihr auf der Seite ssh.com oder in der Manpage zu ssh_config(5).
Schreibe einen Kommentar