Einrichten eines Multi-Hop-SSH-Tunnels über einen SSH1-Server

Einrichten eines Multi-Hop-SSH-Tunnels über einen SSH1-Server

Ich habe Probleme beim Tunneln durch einen SSH1-Server. Dies ist auf der Maschine eines Kunden und nein, sie werden nicht auf SSH2 aktualisieren.


Ein bisschen Hintergrund: Ich kann erfolgreich durch das Gateway des Kunden tunneln

localhost -> gateway.customer.example.com -> srv.customer.internal

mit dieser Konfiguration

Host gateway
    Hostname gateway.customer.example.com
    IdentityFile ~/.ssh/mykey
    ...

Host srv-tunnel
    ProxyCommand ssh gateway -W srv.customer.internal:22
    IdentityFile ~/.ssh/mykey
    ...

und dann einfach

$ ssh srv-tunnel

Das funktioniert hervorragend und richtet den Tunnel mithilfe der Schlüsseldatei automatisch ein ~/.ssh/mykey.


Ich habe versucht, eine ähnliche Konfiguration für diesen Multi-Hop-Tunnel zu verwenden:

localhost -> gateway.customer.example.com
                |
                v
             onemoregateway.customer.internal -> srv2.customer.internal

aber dieses Mal dieonemoregatewayläuft ssh 1 und hat nicht ncverfügbar. Ich kann eine SSH-Verbindung herstellen onemoregatewayund die Eingabeaufforderung zeigt mir an, dass The only permitted commands are ssh and scp.SSH mit einem Fehler beendet wird, wenn ich versuche, wie oben beschrieben eine Weiterleitungsverbindung einzurichten stdio forwarding require Protocol 2.

Ich kann jedoch nicht direkt von onemoregatewaynach sshen srv2, da sich der private Schlüssel nur auf meinem lokalen Rechner befindet. Um die Sache noch komplizierter zu machen, brauche ich einen Schlüssel für gatewayund einen weiteren Schlüssel für onemoregatewayund srv2.

Also, wie kann ich durchtunneln srv2?

Ich denke, dass es irgendwie möglich sein muss, da meine Kollegen es mit Putty+Pageant unter Windows gemacht haben, aber ich bin unter Linux

Antwort1

Ok, ich habe eine Möglichkeit gefunden, dies zu tun, aber es scheint keine Möglichkeit zu geben, das Tunneln transparent zu machen.

Host gateway
    Hostname gateway.customer.example.com
    IdentityFile ~/.ssh/mykey
    ...

Host tunnel-to-srv2
    ProxyCommand ssh gateway -W onemoregateway.customer.internal
    IdentityFile ~/.ssh/myotherkey
    Protocol 1
    LocalForward 10022 srv2.customer.internal:22
    ...

Host srv2
    Hostname localhost
    Port 10022
    IdentityFile ~/.ssh/myotherkey
    Protocol 1
    ...

Und jetzt muss ich

$ ssh tunnel-to-srv2

und schließlich in einem separaten Terminal*

$ ssh srv2

* Ich kann keinen Weg finden, den Tunneling-SSH-Prozess in den Hintergrund zu versetzen, nicht einmal mit-fNT


Edit: es stellt sich heraus, dass es das onemoregatewaytatsächlich gibt ncund ich es ausführen kann, aber ich muss den vollständigen Pfad verwenden/bin/nc

Also, schließlich habe ich diese Konfiguration

Host gateway
    Hostname gateway.customer.example.com
    IdentityFile ~/.ssh/mykey
    ...

Host tunnel-to-srv2
    ProxyCommand ssh gateway -W onemoregateway.customer.internal
    IdentityFile ~/.ssh/myotherkey
    Protocol 1
    ...

Host srv2
    ProxyCommand ssh tunnel-to-srv2 /bin/nc srv2.customer.internal 22
    IdentityFile ~/.ssh/myotherkey
    Protocol 1
    ...

und ich bekomme transparentes Tunnelhopping, indem ich einfach laufe

$ ssh srv2

verwandte Informationen