GNU/Linux >> LINUX-Kenntnisse >  >> Linux

SSH durch SSH-Tunnel weiterleiten

Lösung 1:

Ihr Problem besteht darin, einen Listener an localhost:22 zu binden; es gibt bereits einen sshd, der darauf hört. Das Tunneln einer ssh-Verbindung durch 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 Sie es

me% ssh [email protected] -L 2201:192.168.25.100:22

dann

me% ssh localhost -p 2201

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

Lösung 2:

Sie müssen keine SSH-Portweiterleitung verwenden, um über einen Proxy eine SSH-Verbindung zu einem internen Computer herzustellen. Sie können die ssh-Funktion verwenden, um einen Befehl auf dem ersten Server auszuführen, mit dem Sie sich verbinden, um eine ssh-Verbindung zu einem dritten Computer herzustellen.

ssh -t [email protected] ssh [email protected]

Der -t Option zwingt ssh, ein Pseudo-TTY zuzuweisen, 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 Maschinen B und C haben, können Sie den -A verwenden Option zum Weiterleiten der Verbindung des Authentifizierungsagenten.

Lösung 3:

Ab OpenSSH 7.3 (Ende 2016) ist der einfachste Weg die ProxyJump-Einstellung. In Ihrem ~/.ssh/config :

Host B
  ProxyJump A

Oder auf der Befehlszeile, -J B .

Lösung 4:

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

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

Dies richtet keinen Port-zu-Port-Tunnel ein, tunnelt stattdessen ssh unter Verwendung von Standard stdin/out. Diese Methode hat den Nachteil, dass tatsächlich drei SSH-Verbindungen zur Authentifizierung vorhanden sind. Aber um sich mit dem internen Host zu verbinden, geben Sie einfach ein:

ssh myinsidehost2

...also müssen Sie sich keine Gedanken über die Auswahl einer IP für diesen Tunnel machen.

Lösung 5:

Laut der SSH-Manpage ist ProxyCommand die richtige Methode

die Syntax lautet:

ProxyCommand ssh -W %h:%p [email protected] 2> /dev/null

Linux
  1. Ssh – Tunnelverkehr durch eine andere Maschine über SSH?

  2. Verbinden eines Ssh-Tunnels beim Neustart?

  3. Wie leitet man das Internet durch einen SSH-Tunnel?

  4. ssh über einen Router ohne Portweiterleitung

  5. VPN-Tunnel für den SSH-Fernzugriff

Ssh – Wie funktioniert Reverse-SSH-Tunneling?

HTTPS-SSH-Tunnel

Wie richte ich einen SSH-Tunnel ein, um SSH weiterzuleiten?

SSH - So fügen Sie den Befehl -t in die Datei ~/.ssh/config ein

SSH von A über B nach C, mit privatem Schlüssel auf B

Passwort zu .ssh/config hinzufügen