SSH-Proxyjump-Befehl zur Konfigurationsdatei

SSH-Proxyjump-Befehl zur Konfigurationsdatei

Ich verwende einen SSH-Befehl, um mich über einen Zwischenknoten über Proxyjump bei einem Remote-Knoten anzumelden. Der Remote- und der Zwischenknoten sind Linux-Server und mein Client ist ein Macbook. Dieser Befehl funktioniert und sieht folgendermaßen aus:

ssh -i .ssh/id_file -J user1@jump_node -A -D remote_port user2@remote_node

wobei ich jump_node und remote_node durch die Hostnamen der Zwischen- und Remote-Knoten und remote_port durch den SSHD-Port auf remote_node ersetze.

Meine erste und wichtigste Frage ist: Wie mache ich diesen Befehl zu einem Konfigurationsabschnitt?die ich in meine .ssh/config-Datei einfügen kann? Ich habe mir die Manpage von ssh angesehen und konnte die entsprechenden Konfigurationsoptionen -Dund -AFlags (ich nehme an ForwardAgent yesfür -A?) nicht finden. Könnte jemand bitte diese Flags erklären und wie man aus diesem Befehl einen korrekten Konfigurationsabschnitt macht?


Meine andere Frage ist weniger wichtig, würde mir aber helfen zu verstehen, was hier vor sich geht.Bei dieser zweiten Frage geht es um einen Fehler, der auftritt, wenn ich einen leicht anderen Befehl eingebe.

In den meisten Online-Dokumentationen, die ich lese, wird die Verwendung eines Befehls wie diesem empfohlen:

ssh -i .ssh/id_file -J user1@jump_node user2@remote_node:remote_port

aber wenn ich diesen Befehl versuche (sowohl mit als auch ohne -AFlag), erhalte ich die folgende Fehlermeldung:

channel 0: open failed: connect failed: Name or service not known
stdio forwarding failed
kex_exchange_identification: Connection closed by remote host
Connection closed by UNKNOWN port 65535

Ich konnte nicht herausfinden, was dieser Fehler bedeutet und ob es einige Hinweise gibt, die ich verwenden könnte?

Antwort1

Sehenman 5 ssh_config:

ForwardAgent yes
IdentityFile .ssh/id_file

Host jump_node
    User user1

Host remote_node
   ProxyJump jump_node
   User user2

und lauf einfach ssh remote_node.

Sie können auf diese Weise sogar eine Kette erstellen, wenn Sie ProxyJumpfür „ jump_nodeauch“ auch (ein anderes) angeben.


Das zweite Problem ist die ssh user2@remote_node:remote_portfalsche Syntax. Die Fehlermeldung lautet , weil versucht wurde (und fehlgeschlagen ist) , als Hostname Name or service not knownaufzulösen (ja, mit eingebettetem Doppelpunkt), nicht wie erwartet. Versuchen Sie, dasselbe ohne auszuführen , die Fehlermeldung wird etwas klarer sein.remote_node:remote_portremote_node-J

Ich würde dies als Versuch interpretieren, einen Port anzugeben, an dem der SSH-Server auf dem Remote-Knoten lauscht; verwenden Sie dazu einen -pBefehlszeilenparameter oder Porteine Host-Eintragsoption in einer Konfigurationsdatei.

Auch dies hat nichts mit dem -DBefehlszeilenschalter zu tun. Und sein Argument ist kein "Remote-Port". Vielmehr macht dieser Schalter etwas ganz anderes, nämlich, dass er den SSH-Client dazu bringt,Hörenauf dem angegebenen Portauf dem lokalen Rechnerund akzeptieren SOCKS-Verbindungen, und der Remote-Server wird als Exit-Knoten verwendet. Sie können ihn beispielsweise im lokalen Browser so konfigurieren, dass er über den SSH-Tunnel auf das Internet zugreift und Dritte (Webserver) Ihre Verbindungen als von der IP des Remote-Hosts kommend sehen; niemand wird Ihre „echte“ IP sehen, außer dem SSH-Server (der in diesem Fall jedoch die Adresse des Jump-Servers sieht). So setzen SieDasIn der Konfiguration verwenden Sie DynamicForwarddie Option in der Konfigurationsdatei.

verwandte Informationen