====== Linux - Erstellen und Verteilen von SSH-Keys ====== Eine Alternative zum klassischen Login via Kennwort, bietet die Authentifizierung via **SSH-Schlüsselpaar**. In diesem Artikel zeige ich Euch, wie Ihr Schlüssel generieren und diese verteilen könnt. ===== Voraussetzung ===== Auf Eurem lokalen Linux, sowie auf dem entfernten Server muss der gleiche Benutzer angelegt werden. In diesem Beispiel, heißen die Benutzer **rsb**. Das lokale Linux hat die IP **10.10.10.10** und der Server die IP **10.10.10.20** ==== Information zur Umgebung ==== Das Ganze wurde auf einem [[https://amzn.to/3sTgtb6|Raspberry Pi 4 ]][[https://amzn.to/3sWcI4N|{{fa>amazon?12}}]] mit **Ubuntu Mate 20.10** durchgeführt. Die Umsetzung ist jedoch auch mit jeglicher Linux-Distribution möglich. Nur die Befehle können hier abweichen. ===== User anlegen ===== Zuerst legen wie die Benutzer mit **sudo adduser rsb** an root@ubuntu:~# adduser rsb \\ adduser rsb \\ Benutzer »rsb« wird hinzugefügt … \\ Neue Gruppe »rsb« (1001) wird hinzugefügt … \\ Neuer Benutzer »rsb« (1001) mit Gruppe »rsb« wird hinzugefügt … \\ Persönliche Ordner »/home/rsb« wird erstellt … \\ Dateien werden von »/etc/skel« kopiert … \\ Bitte ein neues Passwort eingeben: \\ Bitte das neue Passwort erneut eingeben: \\ passwd: Passwort erfolgreich geändert \\ Benutzerinformationen für rsb werden geändert. \\ Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert \\ Vollständiger Name []: \\ Zimmernummer []: \\ Telefon geschäftlich []: \\ Telefon privat []: \\ Sonstiges []: \\ Ist diese Information richtig? [J/N] j \\ ===== User Wechsel und SSH-Test ===== Nachdem die Benutzer angelegt sind, wechseln wir auf unserem lokalen Linux zum neuen Benutzerkonto root@ubuntu:~# su - rsb \\ rsb@ubuntu:~$ \\ Und testen die Verbindung zum Server mit **ssh rsb@10.10.10.20** Ist der Login via Passwort erfolgreich, können wir mit dem Erstellen der Schlüssel weitermachen. ===== Erstellen eines Schlüsselpaares ===== Wir verwenden einen **RSA-Key** mit **4096 Bit** Länge Diesen erstellen wir mit **ssh-keygen -b 4096** rsb@linux:~$ ssh-keygen -b 4096 \\ Generating public/private rsa key pair. \\ Enter file in which to save the key (/home/rsb/.ssh/id_rsa): \\ Created directory '/home/rsb/.ssh'. \\ Enter passphrase (empty for no passphrase): \\ Enter same passphrase again: \\ Your identification has been saved in /home/rsb/.ssh/id_rsa \\ Your public key has been saved in /home/rsb/.ssh/id_rsa.pub \\ The key fingerprint is: \\ SHA256:LkOP1ihhzEmBFNc34S7SJbkWfapT9JUggqhpKcJ3VMA rsb@linux \\ The key's randomart image is: \\ +--[RSA 4096]--+ \\ .o++++.o.. \\ o..E.=o. . . \\ .o. o +.=.. o \\ =+ = + B + . \\ + . O * S . \\ . = X \\ . O + \\ o + \\ +--[SHA256]--+ \\ ===== Wichtig ===== Generell ist es empfohlen ein Passwort für den Schlüssel zu setzen, damit liegt dieser nicht im Klartext vor sondern ist verschlüsselt. Für den Fall, dass der "Private Schlüssel" in falsche Hände gerät, kann dieser ohne das Passwort nicht verwendet werden. ==== Schlüsseldateien ==== Die Schlüsseldateien findet Ihr anschließend in Eurem **.ssh** Verzeichnis rsb@linux:~$ ls -la .ssh \\ insgesamt 16 \\ drwx------ 2 rsb rsb 4096 Feb 28 07:06 . \\ drwxr-xr-x 3 rsb rsb 4096 Feb 28 07:06 .. \\ -rw------- 1 rsb rsb 3381 Feb 28 07:06 id_rsa \\ -rw-r--r-- 1 rsb rsb 740 Feb 28 07:06 id_rsa.pub \\ ===== Öffentlichen Schlüssel auf Zielserver übertragen ===== Mit dem Tool **ssh-copy-id** wird der **Public-Key** auf den Zielserver übertragen rsb@linux:~$ ssh-copy-id -i .ssh/id_rsa.pub rsb@10.10.10.20 \\ /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub" \\ The authenticity of host '10.10.10.20 (10.10.10.20)' can't be established. \\ ECDSA key fingerprint is SHA256:F1syiVFKLvqtWAIyv27KLNRby49pURmMHq8E3Ab3asg. \\ Are you sure you want to continue connecting (yes/no/[fingerprint])? yes \\ /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed \\ /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys \\ rsb@10.10.10.20's password: \\ \\ Number of key(s) added: 1 \\ \\ Now try logging into the machine, with: "ssh 'rsb@10.10.10.20'" \\ and check to make sure that only the key(s) you wanted were added. \\ \\ rsb@linux:~$ \\ ===== SSH-Test mit Schlüssel ===== Nachdem der Schlüssel übertragen ist, können wir die Verbindung mit **ssh rsb@10.10.10.20** testen. Nun sollte nicht mehr nach dem Benutzerkennwort, sondern nach dem Kennwort für den Schlüssel gefragt werden und nach Eingabe die Verbindung hergestellt werden. ===== Fazit ===== Die Authentifizierung via Schlüssel bietet einen weiteren Schutz Eures Zuganges. Ist jemand unberechtigt an Euer Passwort gekommen, kann er ohne Euren **Private Key** keine Verbindung zum Server herstellen. Aus diesem Grund ist es wichtig diesen sicher zu verwahren und niemals jemand zu übergeben. Euer RSB ---- ====== Zusammenhängende Beiträge ====== [[wiki:linux:konnektivitaet:linux-ssh-client|]] \\ [[wiki:linux:konnektivitaet:linux-ssh-server|]] \\ [[wiki:linux:konnektivitaet:linux-ssh-key|]] \\ [[wiki:linux:konnektivitaet:linux-cssh|]] \\ ---- {{page>impressum:ausschluss#Haftungsausschluss}} ---- ~~DISCUSSION~~