SSH Zugriff mit Key – ohne Passwort

Im folgenden Beitrag beschreibe ich die Einrichtung von SSH Zugriff mit Key ohne Passwort unter Linux.
Als ich versuchte die excec-Funktion (Blockly) in ioBroker zu nutzen, um von einem Linux-System auf ein anderes zuzugreifen, blieb mir keine andere Wahl als dieses Anmeldeverfahren zu nutzen. Denn man kann dem Konsolenbefehl „ssh“ kein Passwort übergeben. Ich nutze das SSH-Key Anmeldeverfahren , um auf meine Server oder Systeme vom Smartphone, Tablet oder PC zuzugreifen.

Home-Verzeichnis Rechte setzen (Client und Server)

:~$ sudo chmod 755 /home/<Benutzer>

Schlüsselpaar auf dem Client erstellen
Ich habe mich für einen 2048 Bit langen RSA-Schlüssel entschieden. Ihr könnt die folgenden Eingaben mit Enter bestätigen. Die Eingabe einer Passphrase für den Key ist empfohlen, doch für unser Vorhaben nicht praktikabel.

:~$ ssh-keygen -b 2048

Public Key vom Client auf den Server transferieren
Bei diesem Schritt ist die Eingabe des Passworts ein letztes Mal notwendig, um den Key auf den Server zu transferieren.

:~$ ssh-copy-id -i /home/<Benutzer>/.ssh/id_rsa.pub <Benutzer>@192.168.0.130

Wurde die Verbindung erfolgreich hergestellt, ist in der Datei /home/<Benutzer>/.ssh/authorized_keys auf dem Server der Public-Key vom Client erfolgreich eingetragen. Prüfen könnt ihr das wie folgt:

:~$ cat /home/<Benutzer>/.ssh/authorized_keys

SSH-Key Verbindung testen – Client zu Server
So könnt ihr testen, ob die Einrichtung erfolgreich abgeschlossen wurde – die Passworteingabe ist ab jetzt nicht mehr erforderlich.

:~$ ssh <Benutzer>@192.168.0.130

Hat man die Konfiguration abgeschlossen und der SSH Zugriff mit Key funktioniert, so ist die Deaktivierung des Anmeldeverfahrens mit Passwort möglich. Dazu einfach diese Zeile in der systemweiten Konfiguration ändern.

:~$ sudo nano /etc/ssh/ssh_config

PasswordAuthentication no

Zusätzliche Einstellungen auf dem Server – Benutzer mit sudo ohne Passwortabfrage

Mein Benutzer gehört zwar zu der Gruppe sudo, aber für manche Kommandozeilenbefehle ist ein Passwort notwendig. Das habe ich auf dem Server wie folgt gelöst:

:~$ sudo visudo

# This file MUST be edited with the 'visudo' command as root.
# Please consider adding local content in /etc/sudoers.d/ instead of directly modifying this file.

# See the man page for details on how to write a sudoers file.
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

#User privilege specification
root    ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
# sudo   ALL=(ALL:ALL) ALL
%sudo  ALL=(ALL) NOPASSWD:ALL

#See sudoers(5) for more information on "#include" directives:
includedir /etc/sudoers.d

Dieser Eintrag muss auskommentiert

#sudo ALL=(ALL:ALL) ALL

und dieser muss eingetragen werden:

%sudo ALL=(ALL) NOPASSWD:ALL

SSH Zugriff mit Key auf mehr als ein System

Der Zugriff vom selben System auf weitere Systeme ist möglich, allerdings benötigen wir dafür eine Benutzer-Konfigurationsdatei im .ssh Ordner des Users.

:~$ .ssh/config

Dieses Vorgehen ist nötig, weil SSH lediglich versucht mit dem Standard-Key Paar (id_rsa/id_rsa.pub) eine Verbindung herzustellen. Das neue Schlüsselpaar erhält für die weitere Verbindung einen anderen Namen, sonst überschreiben wir den ersten Key. Das neue Schlüsselpaar muss in SSH bekannt sein, andererseits ist ein Verbindungsaufbau nicht möglich.

Die Datei lässt sich mit dem Texteditor nano einfach erstellen oder mit einem Editor eurer Wahl:

:~$ nano .ssh/config

Host rpi4
        HostName  192.168.0.163
        User pi
        IdentityFile ~/.ssh/id_rsa_rpi4

Host 192.168.0.163
        HostName  192.168.0.163
        User pi
        IdentityFile ~/.ssh/id_rsa_rpi4

-----------------------------------------

Host grafana
        HostName  192.168.0.130
        User grafana
        IdentityFile ~/.ssh/id_rsa_grafana

Host 192.168.0.130
        User grafana
        IdentityFile ~/.ssh/id_rsa_grafana

Die ersten beiden Einträge verweisen auf den selben Host und dient lediglich der Veranschaulichung. Die Verkürzung des SSH-Befehls, sowie folgende Schreibweisen für den Verbindungsaufbau sind nun möglich:

:~$ ssh rpi4
:~$ ssh 192.168.0.163

:~$ ssh grafana
:~$ ssh 192.168.0.130

Hier könnt ihr den Artikel lesen über die ioBroker Blockly exec-Funktion.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

* Bitte akzeptiere die Bestimmungen zum Datenschutz.