Zuletzt aktualisiert am 19. Februar 2023
SSH-Key generieren und Server verwalten | Tutorial
Du willst deinen Server mit einem SSH-Key verwenden können, um dein Leben als Admin einfacher zu gestalten? Hier bist du richtig! 🙂
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:
- Enter file in which to save the key: “Name des Keys” (in meinem Fall „rocky“)
- Enter passphrase: Ganz wichtig ist, dass du immer ein Passwort verwendest, weil dein Key dadurch sicherer wird.
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!