In einem vergangenen Post habe ich bereits gezeigt, wie man sich an einem Linux OpenSSH SErver mit Public Key Authentication mit dem Windows Client putty anmeldet. Nun werden wir das ganze für einen Linux Client aufzeigen.
Als ersten Schritt wird dazu am Cleint ein Schlüsselpar mit ssh-keygen erstellt. Für die RSA-Schlüssel wird eine Bitlänge von 4096 Bit gewählt. Wir geben im nachfolgendne Dialgo einen Speicherort für den privaten Schlüssel ein (der öffentliche wird im selben Verzeichnis gespeichert, aber unter anderem Dateinamen) sowie eine Passphrase, mit der wir unseren privaten SChlüsesl vor nicht autorisiertem Öffnen schützen wollen.
ssh-keygen -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/client/.ssh/id_rsa): Enter passphrase (emptry for no passphrase): Enter same passphrase again:
Am schluss bekommen wir noch einen fingerprint und ein randomart image angezeigt.
in dem Ordner sollte jetzt eine Datei key_rsa und eine weiter mit dem Namen key_rsa.pub sein. Erstere ist der private, letztere der öffentliche Schlüssel.
Nun müssen wir den öffentlichen Schlüssel auf den entfernten Server übertragen. Das geht ganz einfach mit dem tool ssh-copy-id
ssh-copy-id -i /home/client/.ssh/key_rsa.pub user@entfernter_server
Jetzt werdne wir nach dem PAsswort des Users auf dem entfernten Server gefragt. Dieses geben wir ein. Nun wird automatisch auf dem entfernten Server im home-Verzeichnis des Users in der Datei .ssh/authorized_keys unser öffentlicher Schlüssel angehängt.
Wir müssen noch sichergehen, dass diese Datei authorized_keys die Berechtiugng 644 und der darüberliegende Ordner .ssh auf dem entfernten SErver die berechtigung 755 hat.
Jetzt, da sich der öffentliche Schlüssel unsers Clients am entfernten Server befindet, können wir die verbindung testen. Wichtig dabei ist, dass dieser uns dann nicht nach dem PAsswort des Benuzters fragt, sondern die Passphrase, mit der der Schlüssel geschützt wird, verlangt wird.
Jetzt haben wir aber immer noch ein Problem: Nämlich, dass wir jedes mal, wenn wir uns auf dem Server einloggen wollen, immer noch ein Passwort eingeben müssen. Zwar nicht mehr das Passwort des Users, aber die Passphrase für den Schlüssel. Damit auch das in Zukunft wegfällt, müssen wir bei jedem Hochfahren unseres SSH-Clients automatisch den Key laden. Ist der Key im Client geladen, wird unser Client die Passphrase automatisch für uns beim Server eingeben. Damit das geht, muss auf dem Server das tool ssh-agent installiert sein. Das prüfen wir mit
which ssh-agent /usr/bin/ssh-agentWenn ssh-agent vorhanden ist, müssen wir sicherstellen, dass bei jedem Hochfahren des Systems der Befehl
ssh-agent $SHELL
ausgeführt wird. Desweiteren müssen wir dann den privaten Schlüssel in den ssh-agent des Clients laden. Dazu muss der private schlüssel im Ordner /home/client/.ssh/ liegen, was er ja tut – nämlich mit dem Dateinamen id_rsa. Wir fügen dann den priavten Schlüssel mit dem Befehl
ssh-add
hinzu. Auch dieser befehl muss jedesmal beim neustart des Systems ausgeführt werden.Das geht über einen Eintrag in der .bashrc bzw. .profile-Datei im Home-Verzeichnis unseres Users, über den wir den SSH-Client starten wollen.
vi /home/client/.bashrc ssh-agent $SHELL ssh-add :wqJedesmal, wenn wir uns mit diesem User an der Bash einloggen, wird nun der ssh-agent gestartet. und der private Schlüssel geladen. Wir werden auch hier nach der Passphrase gefragt. Der Unterschied ist: das Passwort müssen wir nicht mehr auf Serverseite, sondern auf dem Client iengeben. Sobald wir eine Verbindung mit dem SErver versuchen, müssen wir kein Passwort mehr eingeben. Da wir bei jedem Login des Users automatisch nach der Passphrase des Schlüssels fragen, haben wir jetzt auch keinen besonderen manuellen Aufwand mehr – wir loggen usn ein und geben sofort die Passphrase des schlüssels ein. Nun können wir uns automatisiert auf dem Server per SSH einloggen und beispielsweise Tools wie SCP in Skripts nutzen.
Wenn dir dieser Post gefallen hat, teile ihn doch auf Social Media, abonniere und verfolge mich per E-Mail, RSS-Feed, Social Media oder registriere dich auf meiner Seite. Wenn du registriert bist, like den Post bitte, wenn er dir gefallen hat!