Ich habe dieses kleine Hilfsprogramm geschrieben:
for h in $SERVER_LIST; do ssh $h "uptime"; done
Wenn ein neuer Server hinzugefügt wird, $SERVER_LIST
wird das Skript gestoppt mit:
The authenticity of host 'blah.blah.blah (10.10.10.10)' can't be established.
RSA key fingerprint is a4:d9:a4:d9:a4:d9a4:d9:a4:d9a4:d9a4:d9a4:d9a4:d9a4:d9.
Are you sure you want to continue connecting (yes/no)?
Ich habe versucht yes
:
for h in $SERVER_LIST; do yes | ssh $h "uptime"; done
ohne glück.
Gibt es eine Möglichkeit, ssh
die automatische Annahme eines neuen Schlüssels zu parametrisieren ?
yes
"y" ausgibt , sodass Sie möglicherweise mehr Glück damit hattenfor h in $SERVER_LIST; do yes yes | ssh $h "uptime"; done
(beachten Sie das zusätzliche Ja, das ja sagt, was zu sagen ist, anstatt "y" ").Antworten:
Verwenden Sie die Option StrictHostKeyChecking, zum Beispiel:
Diese Option kann auch zu ~ / .ssh / config hinzugefügt werden, zB:
Beachten Sie, dass Sie trotz dieser Option eine Warnung erhalten, wenn sich die Host-Schlüssel geändert haben:
Wenn Ihre Hosts nicht häufig neu installiert werden, können Sie dies mit der
-oUserKnownHostsFile=/dev/null
Option weniger sicher machen (aber für häufig wechselnde Hostschlüssel bequemer) . Dadurch werden alle empfangenen Host-Schlüssel verworfen, sodass die Warnung nie generiert wird.Mit 18.04, gibt es eine neue Möglichkeit:
StrictHostKeyChecking=accept-new
. Vonman 5 ssh_config
:quelle
ssh-keyscan
ist vorzuziehen, wenn es auf Ihrem System verfügbar ist.ssh-keyscan
Ansatz vernünftiger. Für lokale virtuelle Maschinen und andere Hosts in vertrauenswürdigen Netzwerken mit dynamischen / wiederverwendeten IP-Adressen ist der beschriebene Ansatz ausreichend.ssh-keyscan
Lösung ist nur dann für einen Man-in-the-Middle-Angriff anfällig, wennssh-keyscan
sie einmal ausgeführt wird. Die-oStrictHostKeyChecking=no
Lösung ist bei jederssh
Ausführung anfällig für Man-in-the-Middle-Angriffe .Mit dem folgenden Befehl können Sie Ihren known_hosts den Fingerabdruck für einen Server hinzufügen
HINWEIS: Ersetzen Sie <IP-Adresse> und <Hostname> durch die IP-Adresse und den DNS-Namen des Servers, den Sie hinzufügen möchten.
Das einzige Problem dabei ist, dass Sie zweimal mit einigen Servern in Ihren known_hosts enden werden. Es ist nicht wirklich eine große Sache, nur zu erwähnen. Um sicherzustellen, dass keine Duplikate vorhanden sind, können Sie zuerst alle Server entfernen, indem Sie Folgendes ausführen:
So könnten Sie laufen:
Eine Sache, die Sie beim Entfernen beachten sollten, nur um sie erneut hinzuzufügen, ist, dass Sie im Wesentlichen die Sicherheit der Überprüfung des Fingerabdrucks aufheben. Sie möchten dieses Skript also definitiv nicht vor jeder Ausführung Ihres Dienstprogrammskripts ausführen.
quelle
-H
Hostnamen und Adressen gehasht werden.Ich bin mit dieser Antwort etwas spät dran, aber der vernünftige Weg wäre, einen SSH-Keyscan auf der neuen Maschine durchzuführen, bevor Sie die Uptime-Erfassung starten.
Das Deaktivieren der Plausibilitätsprüfung klingt nach einem schlechten Plan, auch wenn Sie der Meinung sind, dass Sie die vollständige Kontrolle über die Umgebung haben.
quelle
StrictHostKeyChecking no
Um eine Liste von Servern automatisch hinzuzufügen, können wir Folgendes tun:
Fügen Sie die IP-Adresse des Servers in die Dateiserverliste ein
Die IPs sollten im folgenden Format hinzugefügt werden.
Ausgabe von
cat servers-list
Ändern Sie die obigen IP-Adressen, indem Sie Ihre ersetzen.
Der folgende Befehl fügt alle Server aus der Liste hinzu.
quelle