SSH ohne Passwort via authorized_keys – So geht’s

Hier eine kurze Anleitung, wie du SSH Befehle ohne Passwort ausführen kannst. Das ganze funktioniert über ein Schlüsselpaar. Dies ist hilfreich, wenn man sich oft auf dieselben Linux Systeme verbinden muss, oder wenn ein Linux System via Script befehle auf einem anderen ausführen soll. Außerdem ist bei vielen Linux Distributionen der Root Login via Passwort deaktiviert, so dass man sich nur mit dieser Methode direkt als Root anmelden kann.

Was ist überhaupt SSH?

Secure Shell oder SSH ist ein Netzwerkprotokoll, mit dem du dich auf sichere weise mit einem entfernten System verbinden kannst, um z.B. Kommandos auf der Kommandozeile auszuführen.

Rsh, rlogin, rcp, telnet, etc. waren vorgänger von SSH. Secure Shell hat ihnen gegenüber einige Vorteile:

  • mehr Sicherheit bei der Authentifizierung
  • leichter Zugriff auf fremde Systeme
  • verschlüsselte Session
  • Spoofing wird erschwert

Grundwissen zu Schlüsselpaaren

ssh ohne passwort Schluesselpaar

Normalerweise musst du, wenn du eine SSH Verbindung herstellst, dich am Zielsystem mit Benutzername und Kennwort authentifizieren. Damit du die SSH Verbindung herstellen kannst, ohne das Passwort Eingeben zu müssen, musst du auf deinem Quellsystem (z.B. deinem Windows Computer) SSH Schlüssel erstellen. Dieser Schlüssel besteht aus 2 Teilen, einen öffentlichen Schlüssel (Public-Key) und einem privaten Schlüssel (Private-Key).

Der Private Schlüssel wird niemals weitergegeben. Der Öffentliche dient der Authentifizierung an anderen Systemen.

Quelle und Ziel

Zuerst muss man sich klarwerden, welches System die Quelle, und welches System das Zeil ist.

QuellsystemZielsystem
Baut die SSH Verbindung zum Zielsystem aufFühr die Befehle/das Skript aus
Public-Key auf Zielsystem kopierenPublic-Key in authorized_keys importieren

Dadurch, dass du den Public-Key in die authorized_keys kopiert, weis dein System, dass derjenige mit diesem Key vertrauenswürdig ist und eine Verbindung herstellen darf.

SSH Key Authentication einrichten

Quellsystem

Erstellen der Schlüssel

Zuerst melden wir uns via SSH oder wie auch immer am System an. Wichtig ist das wir uns als der Benutzer anmelden, der später die SSH Verbindung aufbauen ausführen soll. In meinem Fall baue ich die SSH Verbindung als Benutzer Root auf.

Folgende Befehle erstellen das Schlüsselpaar mit RSA oder DSA Verschlüsselung. Du kannst auch beide Verfahren kombinieren für eine noch stärkere Verschlüsselung. Das ist aber i.d.R. nicht erforderlich.

ssh-keygen -t rsa
ssh-keygen -t dsa
Hinweis für Homematic Zentralen

Falls du diesen Befehl auf einer Homematic CCU2 oder CCU2 ausführen willst, musst du vorher das Dateisystem mit mount -o rw,remount /  beschreibbar machen.

Aus dem Blog
SSH Verbindung aufbauen: Die besten Methoden
Erstellung der Keys auf dem Quellsystem in Putty
Die Kommandos zum erstellen des Schlüsselpaares in einem SSH Terminal.

Die Kommandos kannst du wie folgt quittieren:

Enter file in which to save the key (Home-Verzeichnis des Users)Kann mit Enter bestätigt werden, hier werden die Keys gespeichert.
Enter Passphrase (empty for no passphrase)Die Passphrase (das Kennwort für den Schlüssel), die du eingeben musst, sollte zwar sicher, aber nicht übertrieben lang sein. Du musst sie nämlich eventuell noch ein paar mal eingeben.

Hinweis zum Kennwort für das Schlüsselpaar: Wenn die schlüssel mit einem Kennwort versehen ist, kann ein Dritter die Schlüssel ohne das Kennwort nicht verwenden. Dieses Kennwort hat keinen Einfluss auf die Sicherheit oder Verschlüsselung der SSH Verbindung.
Enter same passphrase againDas vorher eingegebene Kennwort nochmals bestätigen.
Your identification has been saved in (Home-Verzeichnis des Users)Hier wird die Identifikation gespeichert.
Your Public Key has been saved in (Home-Verzeichnis des Users)In diesem Pfad wurde der Public Key gespeichert.
The Key Fingerprint isDer Fingerprint des Keys wird in der Konsole angezeigt.

Nun werden für das Schlüsselpaar Dateien erzeugt:

Public KeyPrivate Key
RSA~/.ssh/id_rsa.pub~/.ssh/id_rsa
DSA~/.ssh/id_dsa.pub~/.ssh/id_dsa

Ich mache in der Anleitung mit rsa Key weiter. Falls du DSA Keys erstellt hast, tausche bei den entsprechenden Befehlen den Dateinamen aus.

Kopieren des Public-Key auf das Zielsystem

Nun müssen wir die *.pub Dateien auf den Zielhost kopieren und dor an ~/.ssh/authorized_keys anhängen. Des weiteren benötigen wir den Hostnamen oder die IP-Adresse des Zielsystems, da wird die Datei ja schließlich dorthin kopieren müssen. Ich verwende hierfür den Befehl scp und kopiere den Public-Key in das tmp Verzeichnis des Zielsystems:

scp ~/.ssh/id_rsa.pub pi@rbpi-ccuio:/tmp
Kopieren des Public-Keys aufs Zielsystem in Putty via scp

Zielsystem

Erstellen der Schlüssel auf dem Zielsystem

Wichtig ist das wir uns am Zielsystem als der Benutzer anmelden, der später die Befehle ausführen soll und kann! Ich möchte die Befehle später als Benutzer pi auf meinem Raspberry pi ausführen.

Zuerste erstellen wir hier ebenfalls ein Schlüsselpaar mit dem gleichen Befehl wie beim Quellsystem

ssh-keygen -t rsa
Erstellung der Keys auf dem Zielsystem in Putty

Importieren des Schlüssels des Zielsystems

Nun müssen wir den vorher kopierten Public-Key des Quellsystems in die authorized_keys des Zielsystems importieren.

cat /tmp/id_rsa.pub >>~/.ssh/authorized_keys

Nun wird der kopierte Public-Key sicherheitshalber via rm /tmp/id_rsa.pub  vom Zielsystem gelöscht, um Missbrauch vorzubeugen.

Testen der Authentifizierung

Das Testen der Verbindung ist ebenfalls wichtig, um den Host in die Liste der Bekannten Hosts aufzunehmen. Dies muss bei jeder Verbindung mit einem neuen System einmalig manuell mit “yes” bestätigt werden. Danach sollte diese Meldung nie wieder erscheinen. Demzufolge führen wir unten stehenden Befehl natürlich auf dem Quellsystem aus…

ssh pi@rbpi-ccuio pwd
Putty Continue Connection to unkown Host

Zum endgültigen testen verwende ich gerne den Befehl ssh um mich auf dem Zielsystem anzumelden, und führe den Befehl pwd auf dem Zielsystem aus. Wenn das home Verzeichnis des Benutzers des Zielsystems angezeigt wird, ist der test erfolgreich.

ssh pi@rbpi-ccuio pwd
Ausgabe des Kommandos pwd in Putty

Fertig!

Vielen Dank fürs Lesen! Wie immer hoffe ich der Artikel hat euch gefallen und ich konnte euch weiterhelfen.
Ihr wisst ja, wenn euch der Artikel gefallen hat, auf keinen Fall teilen oder gefällt mir drücken und bei Fragen oder Anregungen kein Kommentar schreiben 😉

Schreibe einen Kommentar

Melde dich zum Newsletter an

Melde dich zum Newsletter an

Erhalte die neusten Updates und interessante Beiträge vor allen anderen und schließe dich 10.000 monatlichen Lesern an!

Du hast dich erfolgreich angemeldet. Bitte überprüfe dein Postfach und den Spam-Ordner, um deine Anmeldung zu bestätigen!