Normalerweise erstellt der Befehl ssh-keygen einen Schlüssel id_rsa unter dem Home Verzeichnis. Was aber, wenn wir mehrere SSH-Keys verwenden wollen? Den SSH-Key erstellen wir hier für einen normalen Benutzer und niemals für root!
Server IP: 123.45.678.90
Benutzer: USER
SSH-Key: id_rsa_local
auf dem Server (hier die IP 123.45.678.90)
Erstelle mittels ssh-keygen den Schlüssel (hier id_rsa_local) und kopiere diesen mittels cat nach ~/.ssh/authorized_keys
$ ssh-keygen -m PEM -t rsa -b 4096 $ cat ~/.ssh/KEYNAME.pub | ssh USER@123.45.678.90 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
läuft der Server auf einem anderen Port als 22, ist der Port (hier 1004) anzugeben:
$ cat ~/.ssh/KEYNAME.pub | ssh USER@123.45.678.90 -p 1004 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
$ ssh-keygen -m PEM -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (/home/USER/.ssh/id_rsa): /home/USER/.ssh/id_rsa_local (...) (...) (...) $ cat ~/.ssh/id_rsa_local.pub | ssh USER@123.45.678.90 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" The authenticity of host '123.45.678.90 (123.45.678.90)' can't be established. ED25519 key fingerprint is SHA256:bL8trr2HdSSw777CXIanpYeXvo1826v1Kj78UMa5NtE. This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '123.45.678.90' (ED25519) to the list of known hosts. USER@123.45.678.90's password: DEIN USER PASSWORT
Nun lassen wir uns den SSH-Key anzeigen und kopieren diesen Schlüssel auf unseren Client-PC:
$ less ~/id_rsa_local
Client PC
auf dem Client PC benötigen wir den ssh-key und ein config-File. Der ssh-key (hier id_rsa_local) muss die Berechtigung 600 haben. Diese Berechtigung ist per root zu setzen:
# chmod 600 /home/BENUTZER/.ssh/id_rsa_local
Erstelle unter ~.ssh ein config File mit:
$ nano ~/.ssh/config
# ssh configuration file
# BEISPIEL / EXAMPLE
# HostName = IP Adresse des Servers, z.B. 123.45.67.890
Host local
HostName 123.45.678.90
Port 123456
User USER
IdentityFile ~/.ssh/id_rsa
Host mailserver
HostName 25.10.200.4
Port 22
User dana
IdentityFile ~/.ssh/id_rsa_mailserver
Host backupserver
HostName 9.12.200.5
Port 22
User annalena
IdentityFile ~/.ssh/id_rsa_backupserver
Nun reicht die Übergabe des Host nach ssh:
$ ssh local
root-Login und Passwort verbieten
Vorsicht! Mach dies nur, wenn mit der Anmeldung SSH-Key wirklich alles klappt. An sonst kannst du dich vom System aussperren. Editiere dazu die /etc/ssh/sshd_config
# nano /etc/ssh/sshd_config
Setze nun PasswordAuthentication und PermitRootLogin auf den Wert no
PermitRootLogin no
PasswordAuthentication no
starte den Dienst neu:
# systemctl restart sshd
weitere Verschlüsselungen
Erstellen wir den Schlüssel mittels ED25519 oder ECDSA ist das Vorgehen analog! Der öffentliche Schlüssel (z.B. id_ecdsa.pub) muss nach ~/.ssh/known_hosts kopiert werden, während der geheime Schlüssel (z.B. id_ecdsa) auf dem Client-PC landen muss.
$ ssh-keygen -t ed25519 $ cat ~/.ssh/id_ed25519.pub | ssh USER@123.45.678.90 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
oder alternativ
$ ssh-keygen -t ecdsa -b 521 $ cat ~/.ssh/id_ecdsa.pub | ssh USER@123.45.678.90 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Windows
Nun übertragen/kopieren wir den privaten Schlüssel id_rsa nach: C:\Users\BENUTZER\.ssh
Achte darauf, bei Windows die Dateierweiterung .txt zu entfernen. Die Datei heisst hier id_rsa und nicht id_rsa.txt
Bei einem Login wird nun der private Schlüssel auf Deinem PC mit dem Schlüssel auf dem Server abgeglichen. Passen die zusammen, wird die Verbindung akzeptiert.
Linux
Hier muss zwingend die Berechtigung vom id_rsa Schlüssel unter ~/.ssh/id_rsa
auf 600 gesetzt werden. Ansonst kommt es zu diesem Vorfall:
$ ssh yuna@192.168.0.81 -p 22 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0770 for '/home/BENUTZER/.ssh/id_rsa' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "/home/BENUTZER/.ssh/id_rsa": bad permissions yuna@192.168.0.81's password: (...)
Die korrekte Berechtigung setzen wir mittels:
# chmod 600 /home/BENUTZER/.ssh/id_rsa