1. Home
  2. Linux
  3. Systemadministration
  4. SSH Login mit Public-Keys

SSH Login mit Public-Keys

Aufgabenstellung: Für ein automatisiertes Backup eines Remote-Servers soll eine SSH-Verbindung vom Backup-Server aus aufgebaut werden können, ohne das weder ein Passwort eingegeben werden muss, noch eines im Klartext in einer Konfigurationsdatei hinterlegt werden muss.

Lösungsansatz: Mit dem Public-Key-Verfahren werden Public- und Private-Keys generiert, welche sowohl Benutzer, wie auch den Host authentifizieren.

Voraussetzungen: Folgende Voraussetzungen müssen für die Umsetzung des o.g. Lösungsansatzes erfüllt sein:

  • Auf beiden Servern muss das openssh-server Paket installiert sein.
  • SSH-Zugang auf dem Remote-Server muss initial vorhanden sein.

1. Client Setup

Der Client ist in diesem Kontext der Host, der eine Verbindung zur Gegenstelle aufbaut. In der Praxis könnte dies z.B. ein Backup-Server sein, der eine Verbindung zu einem Remote-Server aufbaut und ein Backup triggert.

1.1 Installation des openssh-server Paket:

# apt install openssh-server

1.2 Key-Generation

Generieren Sie das private und öffentliche Schlüsselpaar. Übernehmen Sie den vorgeschlagenen Speicherpfad und vergeben Sie kein Passwort für den privaten Schlüssel. Der private Schlüssel ist zwar der Dreh und Angelpunkt im Sicherheitskonzept des Public-Private-Key-Verfahrens und sollte besonders geschützt werden, das Abfragen eines Passworts ist jedoch bei automatisierten Prozessen nicht immer zielführend. Zumindest nicht, wenn kein SSH-Client Verwendung findet, der den entschlüsselten Private-Key abspeichern kann:

# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

Überprüfen Sie die Berechtigungen des oben angelegten Verzeichnisses /root/.ssh. Dieses sollte ausschließlich nur für root schreib- und lesbar sein.

# ls -la /root/
drwx------  2 root root  4096 Okt 22 20:42 .ssh

Im Verzeichnis .ssh befinden sich nun der private Schlüssel id_rsa und der öffentliche Schlüssel id_rsa.pub:

# ls -l /root/.ssh
-rw------- 1 root root 1831 Okt 22 20:42 id_rsa
-rw-r--r-- 1 root root  406 Okt 22 20:42 id_rsa.pub

1.3 Übertragen des Public-Key auf Remote-Server

ssh-copy-id nutzt das SSH-Protokoll um sich mit dem Remote-Server zu verbinden und den SSH Benutzer Schlüssel zu übertragen. Das Kommando editiert das authorized_keys File auf dem Remote-Server und legt das .ssh Verzeichnis an, falls es nicht schon existiert. Des Weiteren überprüft es ob es diesen Schlüssel bereits gibt und ob die Zugriffsrechte auf die Schlüsseldateien den Vorgaben entsprechen.

Für das Übertragen des Public-Keys ist initial eine durch Passwort abgesicherte SSH-Verbindung notwendig:

# ssh-copy-id -i /root/.ssh/id_rsa.pub root@remote_server_ip_address

1.4 Anmelden auf dem Remote-Server

Um sich nun ohne Eingabe eines Passworts auf dem Remote-Server anzumelden, verwenden Sie folgende Syntax:

# ssh -i /root/.ssh/id_rsa root@remote_server_ip_address

2. Server Setup

Der Server ist in diesem Kontext der Host, zu dem die Verbindung aufgebaut werden soll. In der Praxis könnte dies z.B. ein online gehosteter Web-Server sein zu dem ein Backup-Server automatisiert eine Verbindung aufbaut, um den Host zu sichern.

Im Prinzip ist es ausreichend die Schritte aus dem Client Setup auszuführen. Es ist jedoch weiterhin möglich, dass sich Benutzer auch ohne dem Public-Key-Verfahren am Remote-Server durch die Eingabe eines Passworts anmelden. Möchten Sie die Anmeldung ausschließlich auf das Public-Key-Verfahren einschränken, ist es erforderlich in der SSH-Konfigurationsdatei /etc/ssh/sshd_config den Parameter PasswordAuthentication auf no zu setzen.

Updated on 10. Oktober 2022
Was this article helpful?

Related Articles