Public Key Authentication an Linux OpenSSH mit Linux SSH Client

(Last Updated On: 20. April 2015)

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-agent

Wenn 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
:wq

Jedesmal, 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.

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

DaFRK

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

Das könnte Dich auch interessieren...

2 Antworten

  1. 20. April 2015

    […] können. Je nachdem, welches Betriebssystem Sie zu hause haben, möchten Sie sich von einem Linux Client oder von einem Windows Client aus […]

  2. 21. Juni 2015

    […] als User git auf dem Server einloggen können. Wie das geht, habe ich Ihnen hier für Windows und hier für Linux gezeigt.  Sie haben den SChlüssel wahrscheinlich bereits  im Ordner /home/<ihr username>/.ssh. […]

Kommentar verfassen

This site uses Akismet to reduce spam. Learn how your comment data is processed.