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

Normalerweise musst du, wenn du eine SSH Verbindung herstellst, dich am Zielsystem mit Benutzername und Kennwort authentifizieren. damit du die SSH Verbindung ohne Passworteingabe herstellen kann, musst du auf deinem Quellsystem (z.B. deinem Windows Computer) SSH Schlüssel erstellen. Dieser Schlüssel besteht aus 2 Teilen, einen öffentlichen (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.

Deine Passphrase, 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

Erstellung der Keys auf dem Quellsystem in Putty

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 bitte kein Kommentar schreiben 😉