Oft muss ich eine Datei herunterladen, die nicht direkt über die erste SSH-Verbindung erreichbar ist. Zum Beispiel bin ich auf einem Windows-Computer und möchte auf einen anderen Computer zugreifen, auf den nur über LAN zugegriffen werden kann. Das bedeutet, dass ich mich zuerst mit einer Zwischenmaschine und SSH mit der nächsten verbinden muss.
Es wäre einfach, pscp zu verwenden, um die Datei zu erhalten, wenn sie für die erste Maschine verfügbar wäre. Könnte in diesem Szenario eine SSH-Portweiterleitung verwendet werden?
Akzeptierte Antwort:
Ja, in diesem Fall kann die SSH-Portweiterleitung verwendet werden, aber Sie können auch Warnungen über ungültige oder falsche Hostschlüssel erhalten, wenn Sie dies versuchen. Einige SSH-Clients wie OpenSSH verfolgen SSH-Hostschlüssel nur nach Domain oder IP und schließen die Portnummer nicht mit ein. PuTTY scheint die Portnummer mit dem Hostschlüssel aufzuzeichnen und sollte nicht unter diesem Problem leiden, solange Sie konsistent mit den Portnummern sind, die Sie für jeden Host verwenden. Ich würde empfehlen, die Portweiterleitungen zu einer gespeicherten Sitzung in PuTTY hinzuzufügen. Sie können dann auch die zusätzlichen Sitzungen für die verschiedenen Remote-Hosts als gespeicherte Sitzungen speichern und diese mit pscp/psftp verwenden. Sie können mit jedem Port mit hoher Nummer für die Weiterleitung beginnen, z. B. 2220, und von dort aus für jeden Host, den Sie über einen Zwischenhost weiterleiten müssen, um eins nach oben gehen. Zur gespeicherten Sitzung für intermediate
hinzufügen lokale Portweiterleitungen wie Port 2220
und Ziel remote1:22
und Port 2221
mit Ziel remote2:22
für entfernte Hosts remote1
und remote2
Erstellen Sie dann Sitzungen für remote1
mit Ziel localhost
und SSH-Port 2220
und eine Sitzung für remote2
mit Ziel localhost
und SSH-Port 2221
. Um Sitzungen mit pcsp/psftp zu verwenden, verwenden Sie @session-name
für den Host.
Das Problem tritt auf, wenn Sie entweder irgendwie einen SSH-Hostschlüssel mit localhost verknüpft haben und versuchen, eine Verbindung zu einem lokalen Port herzustellen, der an einen anderen Computer weitergeleitet wird. Bei OpenSSH habe ich dieses Problem behoben, indem ich HostKeyAlias
verwendet habe . Ich habe Einträge zu meinem ~/.ssh/config
hinzugefügt so:
Host intermediate
HostName intermediate.example.org
LocalForward 2220 remote1.example.org:22
LocalForward 2222 remote2.example.org:22
Host remote1
HostName localhost
Port 2220
HostKeyAlias remote1.example.org
Host remote2
HostName localhost
Port 2221
HostKeyAlias remote2.example.org
Meine bevorzugte Lösung war jedoch, IPv6 in meinem Heim- und Arbeitsnetzwerk bereitzustellen, und ich musste mich nicht mehr darum kümmern, zuerst eine Verbindung zu einem Zwischenserver herzustellen, um an mein endgültiges Ziel zu gelangen.
Verwandte:Linux – Gibt es ein ernsthaftes Risiko, wenn Mint 17 denkt, es sei Ubuntu?