Wie füge ich den Server automatisch zu known_hosts hinzu? (Und verwende keinen MD5-Fingerabdruck, da ich eine sichere Methode meine. Bitte sende keine „Auto Yes/Accept“-Lösungen. Ich möchte die erforderlichen Anmeldeinformationen vom Server auf die Maschine übertragen.)
Ich möchte meine SSH- known_hosts
Datei automatisch aktualisieren, um neue Server zu akzeptieren.
Ich gehe davon aus, dass ich den öffentlichen Schlüssel des Servers hinzufügen muss ( id_rsa.pub
über einen sicheren Kanal erhalten), aber ich sehe, dass das Format anders ist (ich habe versucht, es so hinzuzufügen, awk '{print "server "$1" "$2}' id_rsa.pub > .ssh/known_hosts
aber die Überprüfung ist fehlgeschlagen. Bitte beachten Sie, dass ich aufgrund von MD5-Fehlern keinen MD5-Fingerabdruck verwenden möchte). Wenn etwas anderes id_rsa.pub
nützlich wäre, kann ich Befehle auf dem Server ausführen und Ergebnisse über einen vertrauenswürdigen Kanal erhalten. (Bitte beachten Sie, dass es sich nicht um einen Netzwerkkanal handelt (denken Sie daran, den USB-Stick physisch von einem Ort zum anderen zu bringen), was ssh-keyscan
das Problem also nicht löst. Darüber hinaus ist id_rsa.pub der Schlüssel des Dropbear-Servers, der nicht auf dem Server ausgeführt wird, sodass nur Dateien mit Schlüsseln verfügbar sind, nicht der Server.)
Antwort1
Der Name id_rsa.pub
sieht aus wie der öffentliche Schlüssel eines Benutzers. Das hat nichts damit zu tun, dass known_hosts
— known_hosts
Hostschlüssel speichert. Hostschlüssel authentifizieren, wie der Name schon sagt, einen Host (also einen Computer), während Benutzerschlüssel einen Benutzer authentifizieren. Öffentliche Hostschlüssel von OpenSSH befinden sich normalerweise in /etc
oder /etc/ssh
und werden etwa so genannt ssh_host_rsa_key.pub
.
Dropbear verfügt über eine einzelne Datei, die den privaten Schlüssel enthält. Um den öffentlichen Schlüssel zu extrahieren (in einem Format, das zwischen Dropbear und OpenSSH kompatibel ist), führen Sie Folgendes aus:
dropbearkey -f /etc/dropbear/dropbear_rsa_host_key -y | sed -n 2p >host_key.pub
Ich glaube nicht, dass OpenSSH einen Befehl zum Aktualisieren der Datei mitbringt known_hosts
. Das geht ganz einfach manuell:
echo "$server_name,$server_ip_address $(cat server_ssh_host_rsa_key.pub)" >>~/.ssh/known_hosts
Wenn Sie Hostnamen hashen möchten (sodass jemand, der Ihre known_hosts
Datei liest, die Namen dieser Server nicht kennen kann – dies ist ein sehr geringer Datenschutzgewinn), führen Sie es ssh-keygen -H
anschließend aus.