Remote SSH-Tunnel

ErrorKid

Cadet 4th Year
Registriert
Aug. 2010
Beiträge
124
Hallo, folgende Situation:

Auf meiner FritzBox 7050 läuft ein Dropbear SSH Server.
2 Rechner (1 Server, 1 Client) jeweils in einem eigenen Netz.

Rechner 1 (Client)----->FritzBox (SSH-Server)----->Rechner 2 (Server)
-----10.10.0.1----------->-----public.dyndns.de----->----192.168.0.1-----
(Rechner 2 sitzt nicht hinter der FritzBox, sondern kann lediglich auf diese zugreifen)

Wie schaffe ich es also, mit Rechner 1 auf das (zb. Port 80) Webangebot von Rechner 2 zu zu greifen? Ich dachte mir es so, dass ich einen Remotetunnel von Rechner 2 auf die Fritzbox auf mache (80:fritzboxip:1111) und mich danach mit Rechner 1 wieder auf die FritzBox auf diesen Port eine Weiterleitung mach.
Ich möchte dann z.B. im Browser (Rechner 1) localhost:8080 eingeben, auf Port 1111 bei der Fritzbox raus kommen und auf Port 1111 liegt ja der Port 80 von Rechner 2 an. Also meiner Logik nach sollte ich dann die Website von Rechner 2:80-->1111:FritzBox:1111->Rechner 1 empfangen. Wenn ich das ganze so aber aufziehe, bekomm ich leider auf Rechner 1 immer einen Fehler 101 (Fehler 101 (net::ERR_CONNECTION_RESET): Verbindung wurde zurückgesetzt.), das heißt in meinen Augen also, dass eine Verbindung zu Port 1111 an der FritzBox durchaus besteht, dort aber nicht die Daten von Rechner 2 ankommen. Also ist mein Denkfehler bei der Remoteverbindung oder?

Um die Fehleranalyse zu erleichtern benutze ich am Rechner 2 (Server) den Befehl
"SSH -p 123 -R 80:192.168.178.1(fritzip im internen netzwerk wo der router steht):1111 root@server.tld"

Hoffe ihr könnt mein Problem einigermaßen nachvollziehen.
Grüße ErrorKid
 
Hier mal eine kleine Skizze
plan-png.300739

DAS NETZWERK VOM SERVER IST NATÜRLICH "NETZWERK A" (Schriebfehler in Paint)

Von Rechner 1 per SSH auf den Router, welcher von Rechner 2 den Port 80 über einen Remote Port Forward bezieht
 

Anhänge

  • plan.png
    plan.png
    11,6 KB · Aufrufe: 608
Du brauchst dafür auf jeden Fall kein SSH.
Ergänzung ()

Aber ich hab den Aufbau immer noch net verstanden. Auf welcher Seite steht den die Fritzbox?
 
Doch brauch ich auf jeden fall, weil ich weder in Netzwerk A noch in Netzwerk C an die Firewall ran komme!

Es ist ganz einfach vor zu stellen: Netzwerk B ist bei mir daheim. Netzwerk C ist in einem Internetcaffee und Netzwerk A ist ein Hotel. Ich möchte also sicher über SSH im Caffee mit meinem Device auf den Server im Hotel zugreifen, was aber nicht anders geht, da ich 1. nicht den Port für den Server im Hotel weiterleiten kann und 2. es nur so verschlüsselt ist
 
Zuletzt bearbeitet:
Mensch jezt glaub mir doch mal, es geht - ich kann aus beiden Netzen auf eine Fritzbox auf die Bash per ssh zugreifen, ich hab nur ein Problem mit den Weiterleitungen
 
Du musst beim SSH auf die Fritzbox auch die öffentliche IP der Fritzbox benutzen net die private Adresse.
 
Überdenke doch bitte deine Netzwerkgrafik. Wieso gibt es zwei Netzwerk C? Sind das unterschiedliche Netze oder soll das zwei SSH Tunnel bedeuten? Wenn ja, würde ich ein Netzwerk C und die SSH gesondert in die Grafik einzeichnen. Davon abgesehen sind in der Grafik keine internen und externen (sofern bekannt) eingetragen. So kann man bei etwaiger Hilfe schwer sagen "verwende IP x anstatt y".

Davon abgesehen würde ich -p 123 weglassen. Dann hast du noch den Befehl "ssh -R 80:server.tld:1111 user@serverip".

Da ich nicht ganz genau verstehe, wer von wo überhaupt eine SSH Verbindung aufbaut, kann ich zu den Ports nicht sagen. Laut Manual ist die Syntax "port:host:hostport" d.h. port ist der Port vom entfernten Rechner und hostport vom lokalen Rechner.

Soll der HTTP Server etwa die Pakete auf Port 80 ausliefern und von dort Port 80 auf den Fremdport 1111 weitergeleitet werden? Ich denke das geht so nicht. Es würden ja zwei Anwendungen den Port 80 verwenden.

[Nachtrag]
Ich hab im Manual nachgelesen. Womöglich geht es doch so. Der Befehl ist speziell dafür da, Port x auf Port Y weiterzuleiten. So wie ich es bei dir verstehe, müsste es vermutlich "ssh -R 1111:server.tld:80 user@server.tld" heißen.

Dabei bleibt mir noch folgende Frage:
Die IP des SSH Remote Servers wird doppelt verwendet. Einmal für -R und einmal als eigentliche Verbindungsadresse (inkl. User). Ka ob das so korrekt ist, sehe aber keine Alternative.
 
Zuletzt bearbeitet:
plan-png.300791


Hier nochmal die eigentliche Grafik, wie ich es gedacht habe. Stand aber schon unter dem Bild, dass ich mich bei dem Netzwerk verschieben habe.

Ich hab im Manual nachgelesen. Womöglich geht es doch so. Der Befehl ist speziell dafür da, Port x auf Port Y weiterzuleiten. So wie ich es bei dir verstehe, müsste es vermutlich "ssh -R 1111:server.tld:80 user@server.tld" heißen.

Dabei bleibt mir noch folgende Frage:
Die IP des SSH Remote Servers wird doppelt verwendet. Einmal für -R und einmal als eigentliche Verbindungsadresse (inkl. User). Ka ob das so korrekt ist, sehe aber keine Alternative.

Richtig, genau das meinte ich. Nur leider habe ich keine Ahnung ob man als IP die IP im Lokalen Netz verwendet, so wie beim Parameter "L" also z.B. 8080:192.168.178.1:80 oder ob ich die öffentliche IP von meinem Router verwenden muss. Aber wenn ich die öffentliche verwenden muss ist auch die Frage; muss ich dann nicht auch noch was an der FritzBox freigeben?

Grüße ErrorKid
 

Anhänge

  • plan.png
    plan.png
    14,1 KB · Aufrufe: 563
Die interne IP zu verwenden, ergibt IMHO kein Sinn. Damit hat man nichts bewerkstelligt. Das Interface wählt man beim -R Adapter optional vor der ersten Portangabe aus (Bind Address).

In der FritzBox muss der Port (1111 TCP) natürlich freigegeben werden. Es handelt sich um eine für die FritzBox eingehende Verbindung (da sie von außen aufgebaut wird) und bedarf deswegen der Öffnung.

Ich hatte es so verstanden, dass Netzwerk B eigentlich Netzwerk A heißen sollte ;).
 
Laut Manpage ist es so:
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to
be forwarded to the given host and port on the local side.

Das heißt für mich das der 1. Port der Port ist, auf welchem der Server was sendet - 80
Host ist die LOKALE Ip des "hosts", in dem fall also der Router oder?
Hostport: Der Port, auf welchen die Daten vom Server ankommen.

Weiter:
This works by allocating a socket to listen to port on the remote
side, and whenever a connection is made to this port, the connec-
tion is forwarded over the secure channel, and a connection is
made to host port hostport from the local machine.

Daraus verstehe ich, dass man den Host (mein Router) dazu bringt auf einem Port die Verbindung zu belauschen und sobald der Port verbunden ist, werden die Daten da durch geschickt - also was mach ich falsch? :/
 
Zurück
Oben