Antworten:
-o "UserKnownHostsFile /dev/null"
sollte arbeiten.
grep
führt stdout und stderr zusammen. auch der Exit-Status kann sich ändern. Bei der Verwendung bash
, wird es besser sein Prozess Substitution zu verwenden loszuwerden, die Nachricht zu erhalten: ssh 2> >( egrep >&2 -v '^Warning: Permanently added') -o "UserKnownHostsFile /dev/null" [...]
. Es wird die Pipe und damit die entsprechenden Änderungen bei der Behandlung des Ausgangsstatus vermieden.
Wenn Sie dieses Verhalten wünschen, weil Sie mit Cloud-Servern (AWS EC2, Rackspace CloudServers usw.) arbeiten oder ständig neue Images in Vagrant bereitstellen, möchten Sie möglicherweise Ihre SSH-Konfiguration aktualisieren, anstatt Bash-Aliase oder weitere Optionen in der Befehlszeile.
Erwägen Sie, Folgendes hinzuzufügen:
Host *.mydomain.com
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
User foo
LogLevel QUIET
Ich möchte Ihren known_hosts den Hostschlüssel hinzufügen (die Leute, die diese Dienste ausführen, sind meiner Erfahrung nach zumindest schlau genug, um ihre Hostschlüssel zwischen Computern mit demselben Hostnamen konsistent zu halten) und dann StrictHostKeyChecking, CheckHostIP und aktivieren Wenn Sie mit LogLevel ERROR protokollieren, erhalten Sie die beste Erfahrung, ohne an Sicherheit einzubüßen. (Ok, ohne CheckHostIP müssen Sie DNS vertrauen, das ist eine riesige Lücke ohne weit verbreitetes DNSSEC oder ähnliches. Aber das werden wir für den Moment einfach unter den Teppich kehren.)
Ich verwende eine schreibgeschützte Datei "known_hosts", muss also etwas unternehmen, oder ich erhalte endlose Warnungen, dass ich keine Einträge zu "known_hosts" hinzufügen kann.
Was ich benutze:
Host github.com *.github.com
StrictHostKeyChecking yes
CheckHostIP no
LogLevel ERROR
Ich möchte, dass diese Dienste ihre SSH-Hostschlüssel über HTTPS auf ihren Websites veröffentlichen, damit ich sie explizit kopieren kann, ohne mich zuerst verbinden zu müssen und mich möglicherweise einem MITM-Angriff aussetzen zu müssen.
Ich schlage vor
LogLevel ERROR
Über
LogLevel QUIET
So erhalten Sie immer noch "Hostname konnte nicht aufgelöst werden" und andere solche Fehler
Haben Sie versucht zu deaktivieren StrictHostKeyChecking
? Sie können dies mit der -o
Option oder in der Konfigurationsdatei tun ~/.ssh/config
.
Ich fand die folgenden .ssh / config-Einträge nützlich (LAN mit DHCP und DNS):
CheckHostIP no
Host *.*
CheckHostIP yes
Das Ergebnis ist, dass die lokalen Computernamen "zora" oder "goron" nicht nach dynamisch zugewiesenen IP-Adressen suchen. Die statischen IP-Adressen von www.mycompany.com oder node42.planetlab.com werden jedoch weiterhin bestätigt.
grep -v "^Warning: Permanently added"