Damit es im Smalltalk Thread nicht untergeht, kommt es hierhin .
Viele denken sich bestimmt beim ersten eigenen Server (egal ob Droplet, VPS oder Dedicated) "ach ein starkes Passwort reicht schon! Von mir will eh keiner was".
Bitte, bitte hört mit diesem Gedanken auf! Ein Server ist 24/7 erreichbar und vor allem bietet ein jedes offene System im Internet 2 Dinge die Betrüger und andere wollen und brauchen:
- Eine IP Adresse die nicht gesperrt ist
- Ressourcen (CPU Zeit, RAM, Bandbreite)
Ja es gibt Dinge wie "fail2ban" die den Einbruch erschweren, aber wie oft ändert ihr euer Passwort? Wer sagt das ein Hacker (ich nenne das hier mal so nun, der Einfachheit halber) nicht durch Zufall beim ersten Versuch auf euer Passwort kommt?
Dazu kommt, das viele ja gerne das vom ISP gesetzte Passwort einfach lassen, womit kommt das? Meist per Mail, unverschlüsselt. Auch heute ist Verschlüsselung bei Emails nicht verbreitet (sogar Meta bietet es an ), das man in Deutschland wieder Deutsch sein wollte... und einen offenen Standard hinter einer Bezahlschranke stellte und als propitär verkaufte, machte es nicht besser!
Doch back2topic (Ich greife für die Screenshots auf eine Sandbox VM zurück):
Wie sichert man nun seinen Server, NAS, etc mit einem Schlüssel ab?
Zu allererst legen wir dafür ein Schlüsselpaar an, das wir an einem sicheren Ort als Sicherheitskopie haben sollten:
Zum anlegen des Schlüsselpaares verwenden wir das Programm ssh-keygen (das gibts sowohl unter Windows, als auch unter Linux), bedenkt das dies auf dem Host-System passiert, nicht auf dem Server!
Im Normalfall sollte dort als Standardpfad der Pfad zu eurem Nutzerordner stehen (im aktuellen Fall, bei mir: C:\Users\sirzi\.ssh\, den könnt ihr so belassen auch.
id_rsa ist der Dateiname, und sollte ebenfalls nicht geändert werden.
Im Anschluss frägt euch das Programm nach einer Passphrase, das ist mit einem Kennwort vergleichbar, dies könnt ihr leer lassen oder eine festlegen, so habt ihr eine zusätzliche Sicherheit, sollte mal euer Privater Key geklaut werden:
Nach Bestätigung ist euer SSH Key auch schon angelegt, wenn ihr den Ordner vom Anfang öffnet, findet ihr dort nun 2 Dateien: id_rsa und id_rsa.pub
Die erste ist euer Privater Schlüssel und darf unter keinen Umständen herausgegeben werden! Für die nächsten Schritte interessant, ist der Public Key, in der .pub Datei,
deren Inhalt sieht in etwa so aus:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDK/+9OQLGnuksLh7hZylidVCbpFUfQLTP6QzVDY1gTAmOy4zf129PvqA9n9bQqR3G9YYfQy2Sn/LGI880bsBwEBNdOkKSNZGxH3dkLE3DitxV1UbYncPCg6VJ4M5lcKply5eyT4I0IKNNi6cPTapkqUa0E/0PHOnvKn0ngPqplvmiw42sFdFfsuLLFs/dUGUWvaohYwozXU7biz442oqaDvbLg73Ty6pEtkpkVYVcH5trJF/aVmv2ztJ33BfB3YagNZ+SjBAJax/zqdmAOxwQzcvSY3tLDPTzCT73x8mbNTCyUl1b2p/YiYRzzZWww65v+rTQXoMQh5qOEpn5Y03b3R+eou65twCpBu9h3lYrzvfVdO72GJjLDtM/9j0PblyvdPqlwmuR54QIt09MBTTN0ceLrG2C3Jb5r6NcOFVD/6HAuooflMq/j+1N4kaxhYIxSgaW7/L9kZJbzGn1GCphhvOpwGNTe0muTbcQpbmXL177h6hmuHx9M4W0aSBITARE= sirzi@YoRHa-Command
Diesen Key fügen wir nun auf unserem Linux Server ein!
Zu allererst, loggt euch wie gewohnt via SSH auf euren Server ein:
(ja ich war faul... xD)
Anschließend öffnet ihr die folgende Datei, für den Nutzer den ihr ändern möchtet (in meinem Beispiel der root-Benutzer, bitte bedenkt diesen zum einloggen via SSH völlig zu schließen und stattdessen einen Nutzer mit sudo Rechten zu verwenden!):
/home/username/.ssh/authorized_keys
Tipp:
Unter Linux Systemen (Win/Mac ungetestet) kann man mit ssh-copy-id username@remote_host den Schlüssel auf das Zielsystem kopieren lassen
Diese Datei ist, normalerweise leer (und neu) falls ihr nicht schon welche Eingetragen habt!
Dort fügt ihr nun euren Publickey ein:
Und speichert das ganze ab! (Bei nano, wie im Bild: CTRL+X -> Y -> Enter)
Anschließend öffnet folgende Datei: /etc/ssh/sshd_config und sucht dort nach folgenden Einträgen:
- PermitRootLogin -> auskommentieren (das # entfernen) und schauen das da yes dahinter steht, damit verbietet ihr das einloggen via SSH als root
- PubkeyAuthentication -> ebenfalls auskommentieren und auf Ja stellen
- AuthorizedKeysFile -> auskommentieren, es sollte Standard die Pfade .ssh/authorized_keys und .ssh/authorized_keys2 dort stehen
- PasswordAuthentication -> auskommentieren (falls nur als Kommentar) und auf no stellen!
- PermitEmptyPasswords -> auskommentieren und auf yes
Anschließend kannst du mit sudo systemctl restart ssh den SSH Dienst neustarten.
Bevor du die SSH Verbindung schließt, öffne eine zweite Terminal Sitzung und verbinde dich zum versuch mit dem Zielsystem, ohne Passwort. So kannst du prüfen ob es funktioniert und im Notfall noch mal nachschauen!
Falls du 100% sicher gehen willst, auch gerne den Server neustarten.
Sollte alles geklappt haben, sieht der Login nun so aus:
Bonus:
Manche Anbieter (Beispiel Hetzner), bieten die möglichkeit die Server direkt nur mit Publickey auszuliefern:
Neben Publickey haben sich auch verfahren wie U2F (FIDO) und Passkeys etabliert, werden aber nicht von allen Clients unterstützt.
Falls noch fragen gibt: Raus damit, vielleicht habe ich ja was übersehen