Praxisnahe Tutorials, auf die du zählen kannst.
Einsteiger Guide für Home Assistant

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 Log-in via Passwort deaktiviert, sodass 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 Ziel 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.

Mehr von simon42  Mit UNetbootin Windows 10 USB Stick erstellen

Falls du übrigens 2 Kabel verbinden willst, ohne Löten zu müssen, schau mal hier 👈 rein 😉

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

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.

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:

Mehr von simon42  Große SD Karten mit FAT32 formatieren
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.

Zuerst 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 😉

Mehr von simon42  DLAN im Praxistest - devolo Magic 2 vs AVM Fritz Powerline 1260E/1220E

Verpasse keine Tipps!

Ich senden keinen Spam! Erfahre mehr in der Datenschutzerklärung.

Transparenz: In diesem Artikel sind Partnerlinks enthalten. Durch einen Klick darauf ge­lan­gt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhalte ich ei­ne kleine Provision. Für euch ändert sich am Preis nichts & Partnerlinks haben keinerlei Einfluss auf meine Berichterstattung. Vielen Dank für deine Unterstützung!

Gründer von simon42. Schreibt hier ehrlich und leidenschaftlich über Smart Home und Technik Themen, denn das Zuhause wurde bereits von Sprachassistenten übernommen und die Kontrolle abgegeben 😁

1 Gedanke zu „SSH ohne Passwort via authorized_keys – So geht’s“

  1. Hey Simon,
    das ist wie immer von Dir sehr schön beschrieben.
    Das Ganze kann noch gekrönt werden, indem man (zumindest beim MAC) im Quellsystem und dort im Ordner .ssh eine Datei mit Namen “config” mit folgendem Inhalt erstellt:

    Host nxpm
    User pi
    Port 22
    Hostname 192.168.144.11
    IdentityFile ~/.ssh/id_rsa

    Dann kann man sich mit dem Zielsystem verbinden, indem man einfach nur das hier eintippt:
    ssh nxpm

    Und schon ist man eingeloggt.
    Viele Grüße und weiter so
    Tom

    Antworten

Schreibe einen Kommentar

Send this to a friend