ssh-keyscan sammelt die öffentlichen Host-Schlüssel eines SSH-Servers, ohne sich anzumelden — die Grundlage, um known_hosts automatisch zu befüllen. Es gehört zum OpenSSH-Paket und wird häufig in Skripten und Automatisierungen genutzt.
Grundbefehl
ssh-keyscan server.example.com
Der Befehl verbindet sich zum SSH-Port (Standard 22) und gibt die gefundenen Schlüssel im known_hosts-Format aus. Mehrere Hosts sind möglich: ssh-keyscan host1 host2. Mit -p 2222 lässt sich ein abweichender Port angeben.
Typische Verwendung
ssh-keyscan server.example.com >> ~/.ssh/known_hosts
So lässt sich die Host-Key-Abfrage beim ersten Verbinden überspringen — praktisch für Skripte, CI-Pipelines und die Einrichtung vieler Rechner. Mit -H werden Einträge gehasht gespeichert (Standard bei neueren OpenSSH-Versionen).
Sicherheit
- TOFU-Problem: Beim allerersten Abruf kennt der Client den Server noch nicht — ein Angreifer könnte sich einschleichen. Die gesammelten Schlüssel daher über einen vertrauenswürdigen Kanal verifizieren, bevor man ihnen vertraut.
- Mit
StrictHostKeyCheckinglässt sich steuern, wie der Client mit unbekannten oder geänderten Schlüsseln umgeht — in Produktion immeryes(bzw.accept-newnur für neue Einträge). - Alternativ zu
known_hostswerden die authorized_keys des Servers gepflegt — dort stehen die Schlüssel der Benutzer, nicht die des Servers.
Verwandte Grundlagen: SSH, ssh-keygen, known_hosts und authorized_keys.