
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:
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:20000
und 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
Der obige Befehl wurde auf der Maschine ausgeführtA.
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
Obenstehender Befehl ausgeführt amB.
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.)