Wie kann man ssh anweisen, die Authentizität des Verbindungshosts nicht zu überprüfen?

1578
amn

Ich muss regelmäßig eine Verbindung zu Hosts hinter mehreren VPN-Netzwerken und Providern herstellen, die entweder als 10.0.0.*oder bezeichnet werden. 192.168.*.Das heißt, jedes VPN-Netzwerk kann bei der Verbindung einen dieser Bereiche reservieren. Aus diesem Grund kann ich nicht davon ausgehen, dass eine 10.0.0.*Adresse an einen bestimmten Host gebunden ist, da dies davon abhängt, mit welchem ​​VPN ich verbunden bin. Oder sogar zu meinem WLAN-Router auflösen!

Aus diesem Grund habe ich die strikte Schlüsselprüfung für Hosts mit diesen "Intranet" -Adressen, die mit den oben genannten übereinstimmen, explizit deaktiviert ~/.ssh/config:

Host 192.168.* 10.0.0.* StrictHostKeyChecking=no UserKnownHostsFile=/dev/null 

Ich habe diese Anweisungen durch googeln und auch durch andere SO-Fragen und Antworten gelesen.

Das Problem ist, dass ich jedes Mal, wenn ich eine Verbindung zu den oben genannten Adressbereichen herstelle ssh 10.0.0.16, folgendes sagt:

Warning: Permanently added '10.0.0.16' (RSA) to the list of known hosts. 

was offen gesagt unwahr ist, aufgrund der Allgegenwärtigen /dev/null(die ich persönlich oft als hässlichen Hack benutze) - es gibt keine permanente Möglichkeit, etwas hinzuzufügen /dev/null, oder? Es verstopft nur mein Terminal und wirft mich jedes Mal ab, wenn ich es dort sehe.

Gibt es eine Möglichkeit, dass ssh den Fingerabdruck ignoriert und die verwirrende Nachricht oben nicht druckt? Ich will nicht alias ssh='ssh 2>/dev/null'oder so etwas Wahnsinniges. Habe ich falsch gehandelt? Welche Auswahlmöglichkeiten habe ich? Einige andere Optionen vielleicht? Das /dev/nullist meiner Meinung nach ein Hack, und deshalb werde ich bestraft.

Was ich nicht tun möchte, ist ein Alias ​​der Knoten zu einigen Hostnamen auf der Clientseite in meiner ~/.ssh/config, wie in dieser Antwort . Dies hat zwei Gründe:

  • Ich kann ssh nicht einfach so konfigurieren, dass ein Alias ​​(mithilfe der HostDirektive) in eine bestimmte Adresse aufgelöst wird, 10.0.0.15z. B. weil die Adressen von verschiedenen VPN-Providern wiederverwendet werden, mit denen ich mich verbinde. Dies kann beispielsweise ein Host sein, wenn er mit einem VPN verbunden ist, und ein anderer, wenn verbunden mit einem anderen VPN. Sollte ich meine ~/.ssh/configin mehrere "aufteilen", eines für jedes VPN? Und nutzen Sie diese Konfigurationsdateien entsprechend?

  • Ein fraglicher Knoten kann Teil einer ziemlich großen Gruppe von Knoten im selben Intranet sein, einer "Cloud", wie sie heutzutage genannt wird. Die Anzahl der Knoten kann bis zu hundert betragen. Ich bin nicht ganz sicher, wie Sie mehrere solcher Knoten auf ihre jeweiligen Adressen "massenweise zuordnen" können?

0
Ihr einziges Problem ist nun, wie Sie diese Nachricht nach dem Verbinden loswerden können. Marki555 vor 9 Jahren 0
Ja, obwohl die Tatsache, dass ich die Nachricht erhalte, möglicherweise bedeutet, dass ich den falschen Weg eingeschlagen habe. Ich habe `CheckHostIP` noch nicht probiert. amn vor 9 Jahren 0
Ich habe versucht, der obigen Regel `CheckHostIP = no` hinzuzufügen, aber es scheint keine unmittelbare Wirkung zu haben - ich bekomme immer noch die Nachricht, als ob etwas" permanent "hinzugefügt wurde (zu` / dev / null`). Genau aus dem Grund, dass mir Sicherheit am Herzen liegt, stört mich die Nachricht, sie ist falsch negativ und stört mein Lesen von Informationen im Terminal. amn vor 9 Jahren 0
sshd erlaubt es nicht, die meisten Sicherheitsfunktionen von Entwurf aus zu deaktivieren (z. B. Verbindung mithilfe von Null-Verschlüsselung). Eine Möglichkeit ist, sshd mit deaktivierten Prüfungen erneut zu kompilieren. Marki555 vor 9 Jahren 0
Ok, eine verständliche Entscheidung. Sollte ich in diesem Fall "rsh" verwenden, da die Sicherheit durch die VPN-Authentifizierung gewährleistet ist? Soweit ich verstehe, kann es genau das sein, was ich dann will? amn vor 9 Jahren 0
Ja, Sie können versuchen, "rsh" zu verwenden, wenn dies durch Ihre Sicherheitsrichtlinien zulässig ist. VPN schützt übrigens nur Ihre Verbindung zum Ziel-LAN, schützt Sie jedoch nicht vor den Man-in-the-Middle-Angreifern LAN. Marki555 vor 9 Jahren 0
Sie können auch die openssh-Mailingliste oder vielleicht comp.security.ssh ausprobieren barlop vor 9 Jahren 0

2 Antworten auf die Frage

1
davidgo

Indem Sie die Echtheitsprüfungen ignorieren, öffnen Sie sich einem Man-in-the-Middle-Angriff, und möchten Sie vielleicht noch einmal überdenken.

Möglicherweise möchten Sie Ihre SSH-Konfiguration ändern, indem Sie "CheckHostIP" auf "no" setzen und dann in der hosts-Datei Einträge für jeden Host einrichten und die Verbindung nach Name statt nach Hosts herstellen. (Hinweis: Ich habe es nicht ausprobiert, aber ich glaube, dass es funktionieren wird). Werfen Sie einen Blick auch hier.

Nur um es aus dem Weg zu räumen - ich bin mir der Implikationen der Ignorierung von Authetizitätsprüfungen bewusst. Ich glaube, dass diese Implikationen in meinem Fall keine Bedeutung haben, da die gesamte Möglichkeit, die hinter den genannten Adressen liegenden Knoten zu erreichen, erst nach der Verbindung mit dem VPN über eine SSL-Tunnel-Authentifizierung (VMWare-VPN-Client) hergestellt wird. Außerdem vermute ich, dass die VPN-Verbindung selbst SSL-getunnelt ist. amn vor 9 Jahren 0
Ich habe eine ganze Sequenz von Knoten, die Teil einer verarbeitenden "Cloud" sind, und jedes Aliasing wäre unmöglich. Sie werden auch von meinem DNS-Dienst in keiner Weise zugeordnet. Wenn ich sie nicht benenne, können Sie sie nur über IP-Adressen erreichen. Verstehe ich, dass SSH keine Möglichkeit hat, die gesamte Host-IP-Überprüfung einfach in Ruhe zu lassen? Es scheint, dass es teilweise umgangen werden kann, aber es ist nur von begrenztem Nutzen, während der eigentliche Kernpunkt - das Herstellen einer SSH-Verbindung zu einem Server, der durch den IP-Adressraum "wandert" - nicht einfach gelöst werden kann. amn vor 9 Jahren 0
1
SoysauceShow

Ich weiß, das ist eine alte Frage, aber ich habe nach einer Antwort darauf gesucht. Also für alle zukünftigen Googler hier, was ich gefunden habe.

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host 

Sie können dies an einen Alias ​​binden, um es Ihnen leichter zu machen.

alias ssh-nocheck='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'  ssh-nocheck user@host 

Die Antwort wurde auf https://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html gefunden

-edit: formatieren