SSH-Keys verwenden

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
diesen Key kopierst du nun vom Server auf den Client-PC unter ~/.ssh

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 webserver
 HostName 5.4.200.4
 Port 1004
 User jirah
 IdentityFile ~/.ssh/id_rsa_webserver

Host backupserver
 HostName 9.12.200.5
 Port 22
 User annalena
 IdentityFile ~/.ssh/id_rsa_backupserver

Auf den Client-PC benötigen wir ein config-File unter ~/.ssh/config und natürlich den SSH-Schlüssel. Hier id_rsa_local

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"

Hinterlassen Sie einen Kommentar