SSH-Verbindung zwischen zwei Behind-Nat-Computern über einen dritten öffentlichen IP-Computer

8

Ich habe einen Computer zu Hause ( Home-Server ) , die irssi läuft, rtorrent usw. Mein ISP ist jeder Verkehr von außen blockiert (stumm, ich weiß, aber es ist der einzige ISP kann ich).

Ich möchte in der Lage sein , sich einloggen in Home-Server ‚s - Shell von einem beliebigen Remote-Computer (hinter NAT).

Ich habe irgendwo ein Shell-Konto (ohne Root-Zugriff), das könnte nützlich sein.

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

Ist es möglich, auf meinem Home-Server Zugriff auf die Shell zu erhalten ? Ich habe etwas über SSH-Tunneling gehört, aber ich konnte kein Tutorial finden, das zu diesem Fall passt.

Seler
quelle

Antworten:

16

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

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

Auf einem Remotecomputer (Tunnel von Remote zu Drittanbieter):
ssh -L 20000:127.0.0.1:20000 thirdparty.org

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

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

Dadurch wird versucht, ssh an Port 20000 auf der Remote-Box zu senden. Da wir einen Tunnel für den Drittanbieter eingerichtet haben, leitet der Befehl # 2 diesen Verbindungsversuch effektiv an 127.0.0.1:20000 auf der Drittanbieter-Shell weiter. Anschließend leitet der erste Befehl die Verbindung erneut zu Port 22 auf Ihrer Home-Box weiter. An diesem Punkt nimmt der SSH-Server die Verbindung auf.

Darth Android
quelle
Können Sie erklären, was dort los ist?
Seler
2
nachdem ssh 127.0.0.1 -p 20000es funktioniert hat. Dennoch, wenn Sie dies bitte erklären könnten ...
Seler
1
Er richtet zwei wirklich einfache VPNs für die Relay-Box ein. Vielleicht möchten Sie etwas wie Autossh auf Ihrer Home-Box verwenden, um sicherzustellen, dass der Tunnel oben bleibt und automatisch gestartet wird.
Zoredache
1
@seler Ich habe einige Details hinzugefügt, bitte lassen Sie mich wissen, wenn Sie weitere Erklärungen benötigen :)
Darth Android
7

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

R -> A.

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

  2. Erstellen Sie einen Tunnel von R ( Port 20000 von R ) nach A ( Port 22 von A ) (Reverse Tunneling)

B -> R.

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

  2. Erstellt einen Tunnel von B ( Port 8000 von B ) nach R ( Port 20000 von R )

B -> A.

ssh 127.0.0.1 -p 8000

Die eigentliche Verbindung wird über R hergestellt , dh B (Port 8000) -> R (Port 20000) -> A (Port 22).


Gleiches gilt für 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
Ryu_hayabusa
quelle
1

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

billc.cn
quelle