SSH-Verbindung zwischen zwei Behind-NAT-Computern über einen dritten Public-IP-Computer

SSH-Verbindung zwischen zwei Behind-NAT-Computern über einen dritten Public-IP-Computer

Ich habe einen Computer zu Hause (Home-Server), auf dem irssi, rtorrent usw. laufen. Mein ISP blockiert den gesamten Datenverkehr von außen (ich weiß, das ist dumm, aber es ist der einzige ISP, den ich haben kann).

Ich möchte mich anmelden können beiHome-Server's Schale von jedementfernter Computer(hinter NAT).

Ich habe irgendwo ein Shell-Konto (ohne Root-Zugriff), das könnte mir vielleicht von Nutzen sein.

Hier ist ein Diagramm, das die Situation beschreibt: Bildbeschreibung hier eingeben

Ist es möglich, Zugriff auf die Shell auf meinemHome-Server? Ich habe etwas über SSH-Tunneling gehört, konnte aber kein passendes Tutorial zu diesem Fall finden.

Antwort1

auf dem Home-Server (Tunnel vom Drittanbieter zum Home-Server):
ssh -R 20000:127.0.0.1:22 thirdparty.org

Dadurch wird Ihre Home-Box mit der Drittanbieter-Shell verbunden und anschließend werden alle Verbindungen zu Port 20000 auf der Drittanbieter-Shell an Port 22 auf Ihrer Home-Box (den SSH-Port) weitergeleitet.

Auf Remotecomputern (Tunnel von Remote zu Drittanbietern):
ssh -L 20000:127.0.0.1:20000 thirdparty.org

Dadurch wird Ihre Remote-Box mit der Drittanbieter-Shell verbunden und anschließend Port 20000 auf der Remote-Box an Port 20000 auf der Drittanbieter-Shell weitergeleitet.

und dann auf dem Remotecomputer (Verbindung über Tunnel herstellen):
ssh 127.0.0.1:20000und geben Sie die Anmeldeinformationen für Ihren Heimserver ein

Dies versucht, per SSH eine Verbindung zum Port 20000 der Remote-Box herzustellen. Da wir einen Tunnel zum Drittanbieter eingerichtet haben, leitet der Befehl Nr. 2 diesen Verbindungsversuch effektiv an 127.0.0.1:20000 auf der Drittanbieter-Shell weiter. Anschließend leitet der erste Befehl die Verbindung erneut an Port 22 Ihrer Home-Box weiter, woraufhin der SSH-Server die Verbindung aufnimmt.

Antwort2

Ich habe versucht, die akzeptierte Lösung unten besser zu erklären. Nehmen wir an, „Maschine A“ und „Maschine B“ befinden sich beide hinter einer NAT-Firewall. Während beide SSH-Zugriff auf eine Remote-Maschine „R“ (sagen wir ein VPS) haben.

R -> A

ssh -R 20000:127.0.0.1:22 user@RemoteHost
  1. Der obige Befehl wurde auf der Maschine ausgeführtA.

  2. Erstellen Sie einen Tunnel ausR(Port 20000 von R) ZuA(Port 22 von A) (Rückwärtstunneln)

B -> R

ssh -L 8000:127.0.0.1:20000 user@RemoteHost
  1. Obenstehender Befehl ausgeführt amB.

  2. Erzeugt einen Tunnel vonB(Port 8000 von B) ZuR(Port 20000 von R)

B -> A

ssh 127.0.0.1 -p 8000

Die eigentliche Verbindung wird jedoch hergestelltR, das istB(Anschluss 8000)-> R(Port 20000)-> EIN(Anschluss 22)


Dasselbe mit PuTTY und Windows:

R -> A

putty.exe -R 20000:127.0.0.1:22 -ssh RemoteHost -P port -l user -pw password

B -> R

putty.exe -L 8000:127.0.0.1:20000  -ssh RemoteHost -P port -l user -pw password

B -> A

putty.exe -ssh 127.0.0.1 -P 8000 -l user -pw password

Antwort3

Oder Sie können auch einige IPv6-Tunnel mit HE.net einrichten und einfach eine direkte Verbindung herstellen ... (Viele VPN-Lösungen funktionieren ebenfalls.)

Antwort4

Unnötig, könnte aber einigen Leuten helfen. Ich füge ein Bild hinzu, um das Obige zu ergänzen.

Bildbeschreibung hier eingeben

verwandte Informationen