SSH-Key

SSH-Key sicher generieren und verwalten

Zuletzt aktualisiert am 19. Februar 2023

Was sind die Vorteile eines SSH-Keys?

Es ist deutlich sicherer ein SSH-Key-Paar zu verwenden, als die standardmäßige Passwort-Abfrage und der wichtigste Vorteil ist, dass es viel schneller geht, dich am Server anzumelden.

Du kannst deinen Server so einstellen, dass kein Passwort bei der Anmeldung abgefragt wird, sondern nur der SSH-Key berücksichtigt wird.
Für mögliche Einbrecher wird das unerwünschte anmelden auf deinem Server, deutlich erschwert, weil der korrekte SSH-Key benötigt wird, welcher stark verschlüsselt ist und in der Regel (hoffentlich) nur bei Dir liegt.

SSH Key generieren – los geht’s

Wie du einen SSH-Key generieren kannst und diesen dann so einrichtest, dass du dich super-easy am Server anmeldest, erfährst du in diesem Tutorial.

Als erstes musst du auf deinem lokalen PC (whatever) ein Terminal öffnen. Ich verwende dafür Ubuntu, daher müsstest du bitte selbst nachforschen, wie das auf Windows funktioniert. Am Mac sind die Befehle gleich, daher – no Problemo.

Wechsle in das Verzeichnis ~/.ssh und falls es nicht vorhanden ist, lege es bitte an.

				
					mkdir ~./ssh
cd ~/.ssh
				
			

Im Verzeichnis ./ssh kannst du nun einen neuen SSH-Key erstellen

Ich verwende die Verschlüsselung ed25519 welche modern und sehr sicher sein soll. 
Mehr zu dieser SSH-Key-Verschlüsselung kannst du hier lesen:
https://medium.com/risan/upgrade-your-ssh-key-to-ed25519-c6e8d60d3c54
 

				
					 ssh-keygen -t ed25519 -C "dein-hostname"
				
			

Mit -C “dein Wunschname” kannst du den SSH-Key benennen, und das solltest du auch, damit alles übersichtlich bleibt. 
Ich verwende dafür den Hostnamen meines Servers.

Danach wirst du noch ein paar Dinge abgefragt, wie: 

  1. Enter file in which to save the key: “Name des Keys” (in meinem Fall „rocky“)
  2. Enter passphrase: Ganz wichtig ist, dass du immer ein Passwort verwendest, weil dein Key dadurch sicherer wird.
ssh-key generieren

Dein Key ist nun generiert und hat nun ein hübsches Muster erzeugt. 

Zur Info: Mein Key wurde nach dem Tutorial natürlich wieder gelöscht. 😉

Überprüfe, ob nun dein Key im Ordner ~/.ssh vorhanden ist:

				
					ls
				
			

Du solltest nun zwei Dateien sehen wie z.B. mein-key und mein-key.pub

SSH Key mit .config einrichten, für “automatisierte Anmeldung” am Server

Damit der Ablauf vereinfacht wird, richte die config Datei so ein, damit die Anmeldung am Server noch schneller funktioniert.

				
					sudo nano ~/.ssh/config
				
			

Dort fügst du den Eintrag für deinen neuen Server ein und speicherst die Datei. Bitte nicht vergessen  den Hostnamen deines Servers einzugeben.

				
					Host dein-hostname #Hostname deines Servers
 HostName 192.168.1.XX #Server-IP eingeben
 IdentitiesOnly yes
 User dein-user #Deinen User-Namen eingeben
 IdentityFile "/home/dein-user/.ssh/dein-ssh-key" #Pfad und Dateiname des SSH-Keys
 Port 22 #SSH-Port
 
 #Optional   
 #ServerAliveInterval 60
 #ServerAliveCountMax 240
				
			

CTRL + X um nano zu schließen und Y + Enter um die config-Datei zu speichern.

Deinen erstellten SSH-Key mit ssh-copy-id auf den Server kopieren

Nun müssen wir nur noch den SSH-Key auf den Server kopieren. Es handelt sich konkret um den key mit der Endung .pub

Der Key, der keine Endung hat, ist der Private-Key und der sollte nur auf deinem lokalen PC liegen.

				
					ssh-copy-id -i ~/.ssh/dein-key.pub deinuser@192.168.1.XX
				
			

Mit dem obigen Befehl, kannst du den Key eingeben und auf deinen Server übertragen. Falls das nicht klappt, kannst du es auch manuell machen, indem du am Server den Ordner ~/.ssh anlegst und dort einen Datei erstellst mit dem Namen authorized_keys

Alternative: SSH-Key manuell auf Server installieren

Am lokalen PC musst du vorab deinen erstellen SSH-Key anzeigen lassen und den Inhalt kopieren

				
					cat dein-key.pub
				
			

Mein Ergebnis sieht so aus und ich kopiere es gleich.

				
					ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX rocky
				
			

Nun logge dich am Server ein und wechsle in den Ordner ~/.ssh

Falls der Ordner nicht vorhanden ist, musst du ihn wie zuvor gezeigt, erstellen.

Erstelle dort mit nano die Datei authorized_keys und füge den kopierten Inhalt ein. Speichern nicht vergessen.

Rechte bzw. Permissions anpassen

Stelle sicher, dass die Rechte für den .ssh Ordner und für deine SSH-Keys lokal und am Server korrekt eingestellt sind.

Am Server

				
					chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/known_hosts #falls vorhanden
				
			

Am lokalen PC

				
					chmod 600 ~/.ssh/dein-key
chmod 600 ~/.ssh/dein-key.pub
chmod 600 ~/.ssh/known_hosts
chmod 600 ~/.ssh/config
				
			

Nun müsstest du dich vom lokalen PC zum Server mit diesem Befehl anmelden können

				
					ssh dein-hostname
				
			

Zu Beginn wird ein Passwort abgefragt, dass du idealerweise erlaubst zu speichern, dann kannst du dich ohne Passwort super-schnell am Server anmelden

In ganz seltenen Fällen musst du den SSH-Server installieren und aktivieren.

				
					sudo apt install openssh-server
sudo systemctl enable ssh
				
			

Pro-Tipp: Starte deine Rechner neu, falls etwas nicht klappt.

SSH-Anmeldungen am Server sicherer machen

Um die Anmeldung von Admins auf deinem Server noch sicherer zu machen, empfiehlt sich folgendes zu ändern:

sshd_config am Server anpassen

				
					sudo nano /etc/ssh/sshd_config
				
			

Füge diese Punkte am Ende der Datei ein, damit sie funktionieren:

				
					# Root User deaktivieren
PermitRootLogin no

# Keine leeren Passwörter erlauben
PermitEmptyPasswords no

# SSH-Port ändern (Wichtig: Du musst den Port auch am 
# lokalen PC unter ~/.ssh/config # anpassen
Port 22345

# SSH-Client abmelden nach 3600 Sekunden (1h)
ClientAliveInterval 3600
ClientAliveCountMax 2

# Nur bestimmte User erlauben sich via SSH anzumelden
AllowUsers user1 user2

# Moderneres SSH-Protokoll (2) verwenden
Protocol 2

# Passwort-Authentifizierung deaktivieren
PasswordAuthentication no
				
			

Starte nun deinen Server neu.

Weitere Infos zum absichern des SSH-Servers findest du hier: 

https://blog.devolutions.net/2017/04/10-steps-to-secure-open-ssh/ 

https://www.redhat.com/sysadmin/eight-ways-secure-ssh 

Es ist sinnvoll, wenn du deine SSH-Keys und Einstellungen sicherst, da du im schlechtesten Fall nicht mehr auf deinen Server kommst! Backup! Backup! Backup! 😉

Ich hoffe, es hat soweit alles geklappt und wünsche dir viel Erfolg damit!

Picture of Hallo. Ich bin Thomas.

Hallo. Ich bin Thomas.

Danke, dass du dir die Zeit nimmst diesen Artikel zu lesen.
Wenn du Unterstützung brauchst, oder Fragen zu meinen Produkten & Services hast, dann schreib mir.

Kostenfreie Erstberatung