Modul 1 · 1.3
Deutsch
Der erste SSH-Login
Modul 1: Ihr erster Server · Lesezeit: 10 Minuten
Lernziel: Nach dieser Lektion können Sie sich zum ersten Mal per SSH auf Ihrem Server anmelden, den Fingerabdruck des Servers prüfen, bevor Sie ihm vertrauen, und Sie wissen, was zu tun ist, wenn die Warnung erscheint, dass sich die Identität des Servers geändert hat.
Kernbegriffe: SSH, Client und Server, Port 22, Versionsbanner, Host Key, Fingerabdruck (SHA256), known_hosts, Trust on First Use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell und Terminal
Was SSH ist
SSH (Secure Shell) ist die verschlüsselte Verbindung, mit der Sie einen Server aus der Ferne verwalten. Sie tippen auf Ihrem eigenen Computer, die Befehle werden auf dem Server ausgeführt. Alles, was über die Leitung geht, auch Ihr Passwort, ist verschlüsselt.
Es gibt zwei Seiten:
- den SSH-Client auf Ihrem eigenen Computer: das Programm
ssh. Unter macOS und Linux ist es standardmäßig dabei. Unter Windows 10 (ab Version 1809) und Windows 11 ist der OpenSSH-Client ein Bestandteil von Windows; Sie verwenden ihn in PowerShell oder Windows Terminal. Fehlt er, fügen Sie ihn über Einstellungen, Optionale Features, "OpenSSH-Client" hinzu. Programme mit Fenstern wie PuTTY funktionieren ebenfalls, in diesem Kurs verwenden wir jedochssh. - den SSH-Server auf dem VPS: das Programm
sshd(von OpenSSH). Es lauscht standardmäßig auf Port 22.
Anmelden
Sie melden sich mit einem Benutzernamen und der Adresse des Servers an:
PS C:\Users\anna> ssh root@192.0.2.10Oder mit einem Namen, wenn Sie diesen im DNS eingetragen haben (Lektion 7.1):
anna@laptop:~$ ssh root@web1.example.comBeim ersten Mal sehen Sie etwa Folgendes:
The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?Das ist der wichtigste Moment dieser Lektion. Tippen Sie nicht blind yes.
Der Host Key und der Fingerabdruck
Jeder SSH-Server hat einen oder mehrere Host Keys: Schlüsselpaare, mit denen der Server beweist, wer er ist. Die öffentlichen Teile liegen auf dem Server in /etc/ssh/, zum Beispiel /etc/ssh/ssh_host_ed25519_key.pub. Bei jeder Verbindung zeigt der Server, dass er den geheimen Teil besitzt.
Ein Fingerabdruck ist eine kurze Zusammenfassung (ein Hash) eines solchen öffentlichen Schlüssels. OpenSSH zeigt standardmäßig die SHA256-Form: SHA256:, gefolgt von 43 Zeichen.
Die Frage "Are you sure you want to continue connecting?" bedeutet: Ihr Computer kennt diesen Server noch nicht. Wer garantiert, dass Sie mit Ihrem VPS sprechen und nicht mit jemandem, der den Datenverkehr abfängt? Niemand, es sei denn, Sie vergleichen den Fingerabdruck mit einer vertrauenswürdigen Quelle.
Diese Quelle ist die Konsole Ihres Anbieters (Lektion 1.2). Dort sprechen Sie nicht über das Netzwerk mit dem Server. Melden Sie sich in der Konsole an und fragen Sie den Fingerabdruck ab:
root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)Stimmt das genau mit dem überein, was der Client anzeigt, tippen Sie yes. Sie können statt yes auch den Fingerabdruck selbst einfügen; dann vergleicht ssh ihn für Sie. Weicht er ab, brechen Sie ab und finden heraus, warum (falsche IP-Adresse, Server neu installiert oder etwas Ernsteres).
Achten Sie auf den Typ: Der Client nennt den Typ (ED25519, ECDSA oder RSA). Vergleichen Sie den Fingerabdruck desselben Typs. Viele Images geben die Fingerabdrücke beim ersten Start auch in der Konsole aus (cloud-init), zwischen Zeilen wie BEGIN SSH HOST KEY FINGERPRINTS.
known_hosts und Trust on First Use
Tippen Sie yes, sehen Sie:
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.Der Client speichert den Schlüssel in ~/.ssh/known_hosts (unter Windows C:\Users\<naam>\.ssh\known_hosts). Ab jetzt vergleicht er bei jeder Verbindung automatisch. Dieses Modell heißt Trust on First Use (TOFU): Beim ersten Mal müssen Sie selbst prüfen, danach überwacht der Client das.
Deshalb ist diese erste Prüfung so wichtig: Vertrauen Sie einem falschen Schlüssel, warnt der Client danach nie wieder.
Arbeiten Sie selbst auf einem Computer mit Debian oder Ubuntu, sind die Namen in known_hosts standardmäßig gehasht (HashKnownHosts yes in /etc/ssh/ssh_config), Sie sehen dort also keine lesbaren IP-Adressen. Unter Windows und macOS stehen sie lesbar darin. Suchen funktioniert überall mit:
anna@laptop:~$ ssh-keygen -F 192.0.2.10
# Host 192.0.2.10 found: line 3
|1|kP9...= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA..."REMOTE HOST IDENTIFICATION HAS CHANGED"
Manchmal sehen Sie diese Warnung:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.Der Server zeigt einen anderen Schlüssel, als Ihr Client kennt. ssh verweigert dann die Verbindung. Es gibt zwei Arten von Ursachen:
| Normal | Verdächtig |
|---|---|
| Sie haben den VPS neu installiert (neue Host Keys) | Sie haben nichts geändert, und trotzdem ist der Schlüssel anders |
| Die IP-Adresse wurde einem anderen Server zugewiesen | Sie sind in einem fremden WLAN |
| Sie haben die Host Keys bewusst ersetzt | Der Fingerabdruck in der Konsole weicht von dem ab, was der Client jetzt sieht |
Gibt es eine normale Erklärung, prüfen Sie erneut den Fingerabdruck in der Konsole und entfernen erst danach die alte Zeile:
anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.Bei der nächsten Verbindung erhalten Sie wieder die Frage vom ersten Mal und prüfen erneut. Setzen Sie nie StrictHostKeyChecking no in Ihren Einstellungen, um die Warnung loszuwerden: Damit schalten Sie genau den Schutz ab, um den es geht.
Das Versionsbanner
Bevor irgendetwas verschlüsselt wird, schicken sich Client und Server eine Textzeile: das Versionsbanner. Es ist für jeden im Internet sichtbar. Sie sehen es mit ssh -v:
anna@laptop:~$ ssh -v root@192.0.2.10 2>&1 | grep "remote software"
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.6p1 Ubuntu-3ubuntu13.5Der Server sagt hier, welches Protokoll (2.0) und welche Software er verwendet. Debian und Ubuntu hängen die Paketversion an. Das ist kein Geheimnis, das Sie verbergen müssen: Angreifer probieren ohnehin alles aus, und Sie schützen sich mit Updates (Modul 4), nicht mit einem anderen Banner. Praktisch ist aber: Am Banner sehen Sie von außen, ob Ihr Server wirklich die aktualisierte Version ausführt.
Unter AlmaLinux und Rocky Linux
Anmelden und Fingerabdrücke funktionieren genauso. Der Dienst heißt sshd statt ssh (systemctl status sshd). Das Banner enthält keinen Distributionsnamen, nur die OpenSSH-Version.
Zusammenfassung
- SSH ist die verschlüsselte Verbindung zu Ihrem Server;
sshist der Client,sshdder Server auf Port 22. - Bei der ersten Verbindung zeigt der Client den Fingerabdruck des Host Keys. Vergleichen Sie ihn mit der Ausgabe von
ssh-keygen -lfin der Konsole, bevor Sieyestippen. - Der Client speichert den Schlüssel in
~/.ssh/known_hostsund warnt künftig selbst (Trust on First Use). - "REMOTE HOST IDENTIFICATION HAS CHANGED" ist nach einer Neuinstallation normal, sonst verdächtig. Entfernen Sie eine alte Zeile nur nach einer Prüfung, mit
ssh-keygen -R. - Das Versionsbanner ist öffentlich; Schutz kommt von Updates, nicht vom Verbergen.
Quiz
Aufgabe
Aufgabe Z1.3: SSH-Banner und Fingerabdruck Ihres Servers. Geben Sie die Adresse Ihres Servers ein, die Softwareversion aus dem Banner (etwa OpenSSH_9.6p1) und den ED25519-Fingerabdruck, den Sie in der Konsole mit ssh-keygen -lf abgefragt haben. Das Programm stellt eine einzige Verbindung zu Ihrem SSH-Port her, liest das Banner und den Host Key und vergleicht. Es meldet sich nicht an.
Weiterführende Informationen
- Per SSH auf Ihrem VPS anmelden (und einen SSH-Schlüssel erstellen)
- Kein Zugriff mehr auf Ihren VPS: Was nun?
- ssh-keygen(1), Optionen -l, -F und -R: https://manpages.debian.org/trixie/openssh-client/ssh-keygen.1.en.html
- ssh_config(5), StrictHostKeyChecking, FingerprintHash und HashKnownHosts: https://manpages.debian.org/trixie/openssh-client/ssh_config.5.en.html
- RFC 4253, Abschnitt 4.2 (das Versionsbanner): https://www.rfc-editor.org/rfc/rfc4253.html
