diff --git a/README.md b/README.md index 2e07226..c0250a7 100644 --- a/README.md +++ b/README.md @@ -268,8 +268,103 @@ Passwort: ### SSH-Zugang für "Public-Key-Verfahren" konfigurieren +Eine der sichersten Möglichkeiten, den Server per ssh-Zugang zu erreichen, ist das sogenannte "Public-Key-Verfahren". Dazu wird auf dem Computer, von dem aus der Server erreicht werden soll, ein Schlüsselpaar erzeugt und dessen öffentlicher Teil auf den Server kopiert. Der ssh-Server wird dann so konfiguriert, dass sich der Benutzer mit der Schlüssel-Authentifizierung anmelden kann, ohne dabei das Passwort eingeben zu müssen. Die Anmeldung ist dann nur von dem Gerät aus möglich, auf dem der Schlüssel gespeichert ist. + +!!! warning "Achtung" + Auf transportablen Geräten sollte die Schlüsseldatei mit einem Passwort geschützt werden. + +#### Vorbereitung am Client (Ubuntu-PC) + +Ein Schlüsselpaar mit `ssh-keygen` erstellen: + +``` +~$ ssh-keygen -b 4096 +Generating public/private rsa key pair. +Enter file in which to save the key (/home/user/.ssh/id_rsa): +Enter passphrase (empty for no passphrase): +Enter same passphrase again: +Your identification has been saved in /home/user/.ssh/id_rsa. +Your public key has been saved in /home/user/.ssh/id_rsa.pub. +The key fingerprint is: +SHA256:1D14Rqm4wCxBJjv+GDDV/w2J5PkUncfkobhYCEILHPE user@PC +The key's randomart image is: ++---[RSA 4096]----+ +|=**+. . +o.. | +|o==.oo.o.+oo . | +|oooFo*+oo.. + o | +|...+-+=oo. + | +| . ooo..S. | +| . o. .o. | +| o | +| | +| | ++----[SHA256]-----+ +``` + +#### Den öffentlichen Teil des Schlüssels auf den Server übertragen + +Das Übertragen des öffentlichen Schlüssels auf den Server erfolgt noch mittels Passwort-Authentifizierung. Wenn später ein weiterer Client für dieses Verfahren eingerichtet werden soll, muss die ssh-Konfiguration vorübergehend auf dieses Verfahren umgestellt werden. Als Werkzeug für die Schlüssel-Übertragung dient das Programm `ssh-copy-id`. Als zusätzlicher Parameter ist der Port anzugeben, der vorher für den ssh-Zugang zum Server festgelegt wurde. + +``` +user@PC:~$ ssh-copy-id -p 54683 -i .ssh/id_rsa.pub sshuser@1.2.3.4 +/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub" +/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 +sshuser@1.2.3.4's password: + +Number of key(s) added: 1 + +Now try logging into the machine, with: "ssh -p '54683' 'sshuser@1.2.3.4'" +and check to make sure that only the key(s) you wanted were added. + +user@PC:~$ +``` + +#### Testen der Schlüssel-Authentifizierung + +Wenn alles geklappt hat, kann man sich jetzt mit dem folgenden Befehl an der ssh-Konsole des Servers anmelden: + +``` +ssh -p '54683' 'sshuser@1.2.3.4' +``` + +#### Änderungen am ssh-Server + +Nach erfolgreicher Anmeldung wird am Server die ssh_Konfiguration so geändert, dass man sich nur noch über das Public-Key-Verfahren anmelden kann: + +=== "/etc/ssh/sshd_config" + ```sh hl_lines="2" + ... + PasswordAuthentication no + ... + ``` + +Sobald der ssh-Server mit dem Befehl `service ssh restart` neu gestartet wurde, sollte die Anmeldung mit Passwort nicht mehr möglich sein. + +``` +sshuser@1.2.3.4: Permission denied (publickey). +user@PC:~$ + +``` + +#### Lesezeichen am Client anlegen + +Wenn man es noch komfortabler haben möchte, kann man sich am Client-PC ein Lesezeichen für den ssh-Server anlegen, um die Verbindung noch einfacher herstellen zu können. Dazu wird die Datei `home/user/.ssh/config` angelegt, bzw. geändert: + +=== "/home/user/.ssh/config" + ``` + Host mein_server + User sshuser + HostName 1.2.3.4 + port 54683 + PreferredAuthentications publickey + IdentityFile ~/.ssh/id_rsa + ``` + + ## Quellen - [https://vitux.com/7-methods-to-generate-a-strong-password-in-ubuntu/](https://vitux.com/7-methods-to-generate-a-strong-password-in-ubuntu/) - [https://developer-blog.net/ssh-port-aendern/](https://developer-blog.net/ssh-port-aendern/) - [https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports](https://de.wikipedia.org/wiki/Liste_der_standardisierten_Ports) +- [https://www.thomas-krenn.com/de/wiki/OpenSSH_Public_Key_Authentifizierung_unter_Ubuntu](https://www.thomas-krenn.com/de/wiki/OpenSSH_Public_Key_Authentifizierung_unter_Ubuntu)