Frage SSH durch SSH-Tunnel weiterleiten


Meine Situation :

Ich (localhost) -> Server A (IP: 100.100.100.100) => (Server B (IP: 192.168.25.100), Server ....)

Ich bin in der Lage, SSH in Server, da es eine echte IP hat Wenn ich dann mit Server b verbinden möchte, würde ich SSH-Server b mit seiner IP (192.168.25.100)

Beispiel:

von meinem PC:

ssh user@100.100.100.100

dann in 100.100.100.100,

ssh user@192.168.25.100

Das würde mich mit ssh zu Server B bringen

Was ist, wenn ich direkt mit dem Server b verbinden möchte? wie kann ich das machen?

Beispiel:

von meinem oc:

ssh@192.168.25.100

Ich habe folgendes versucht:

ssh -L 22:localhost:22 user@100.100.100.100

ohne Erfolg


20
2017-12-15 11:44


Ursprung




Antworten:


Ihr Problem besteht darin, einen Listener an localhost zu binden: 22; da hört schon ein sshd zu. Das Tunneln einer SSH-Verbindung über eine SSH-Verbindung ist völlig legal, und ich mache das ständig, aber Sie müssen unbenutzte Ports für Ihre Weiterleitungs-Listener auswählen.

Versuchen

me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22

dann

me% ssh localhost -p 2201

Sie sollten auf Server B landen (es sei denn, etwas ist bereits an mich gebunden: 2201, wählen Sie in diesem Fall einen anderen Port).


25
2017-12-15 11:49



Danke für die schnelle Antwort! es funktioniert jedoch, wie ich alle Verbindungen statt nur ssh (22) weiterleiten kann? - tom91136
Das ist ein ausgewachsenes VPN, das Sie suchen, nicht nur Port-Forwarding. Es gibt eine Beschreibung darüber, wie vpn-over-ssh zu tun ist bodhizazen.net/Tutorials/VPN-Over-SSH , aber es erfordert Remote-Root-Zugriff über SSH auf A. Oder Sie könnten in OpenVPN oder andere VPN-Lösungen schauen, aber auch hier benötigen Sie Privilegien für A, damit diese funktionieren. - MadHatter
Vielen Dank, eine letzte Sache, was, wenn ich nur mit A verbinden möchte? - tom91136
me% ssh user@100.100.100.100 ; haben wir das nicht schon abgedeckt? oder meinst du "was ist wenn ich ein vollwertiges VPN zu A haben möchte?", in welchem ​​Fall meine Antwort steht. - MadHatter
Für Leute, die VPN über SSH wollen, haben Sie keinen Root-Zugang auf dem Server, aber es hat Python, versuchen Sie es sshuttle. - André Paramés


Sie müssen die SSH-Port-Weiterleitung nicht über einen Proxy an ssh in einen internen Computer senden. Sie können die ssh-Funktion verwenden, um einen Befehl auf dem ersten Server auszuführen, mit dem Sie eine Verbindung zu einem dritten Computer herstellen.

ssh -t user@100.100.100.100 ssh user@192.168.25.100

Das -t Die Option zwingt ssh, ein Pseudo-tty zuzuordnen, damit Sie einen interaktiven Befehl ausführen können.

Dies kann auch mit SSH-Schlüsseln funktionieren. Wenn Sie Ihren privaten und öffentlichen Schlüssel auf Maschine A und Ihren öffentlichen Schlüssel in den autorisierten Schlüsseldateien auf den Maschinen B und C haben, können Sie die -A Option zum Weiterleiten der Authentifizierungsagent-Verbindung.


14
2017-12-15 15:29





Ich habe eine andere Lösung verwendet. Ich benutzte eine ProxyCommand Option (hier in ~/.ssh/config):

Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i

Dadurch wird kein Port-zu-Port-Tunnel aufgebaut, stattdessen wird ssh unter Verwendung von Standard-Standardeingabe / -out ausgeführt. Diese Methode hat den Nachteil, dass tatsächlich drei SSH-Verbindungen zur Authentifizierung vorhanden sind. Um eine Verbindung zum internen Host herzustellen, geben Sie einfach Folgendes ein:

ssh myinsidehost2

... Sie müssen sich also nicht um die Auswahl einer IP für diesen Tunnel kümmern.


10
2017-12-15 15:04



Dies ist die einzige Art von SSH-Stacking, die ich finde. Ich wurde ausprobiert corkscrew oder nc (netcat) aber keiner arbeitet so nahtlos wie dieser. - Phuong Nguyen


Entsprechend der ssh man-Seite ist ProxyCommand die richtige Methode

Die Syntax ist:

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

5
2017-07-21 02:44



Ich bin mir nicht sicher -W Option existierte, als diese Frage beantwortet wurde. Aber mit neueren Versionen des ssh-Clients stimme ich zu, dass die Kombination von ProxyCommand und -W ist die bevorzugte Methode. Vielleicht fügen Sie einen Kontext hinzu, der sowohl zeigt, wie er in der Befehlszeile verwendet werden kann, als auch ein Beispiel für einen Abschnitt für .ssh/config. - kasperd
Irgendeine Idee, wo man die changelogs / Versionsinfo findet, die uns sagt, welche Versionen von SSH das haben -W Befehl und was nicht? Ein bisschen Googeln brachte mir keine schnellen Antworten ... - dmh
-W wurde mit OpenSSH 5.4, veröffentlicht im Jahr 2010 eingeführt. Die Antwort lautet also @kasperd - 0xC0000022L


Ab OpenSSH 7.3 (Ende 2016) ist der einfachste Weg der ProxyJump Rahmen. In deiner ~/.ssh/config:

Host B
  ProxyJump A

Oder auf der Kommandozeile, -J B.


2
2018-01-17 21:41