PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSH-Tunnel: Wie mehrfach benutzen?



pibi
24.06.03, 13:10
Ich sitze hier in der Firma hinter einer Firewall, die eigentlich alles dichtmacht ausser http (via Proxy mit Authentifizierung) und ftp. Damit ich trotzdem auf meinen Server zuhause zugreifen kann (ich weiss, es ist rechtlich -hmmmm- sehr heikel), verwende ich das Programm-Paket hts/htc, welches ssh-Zugriffe via http tunnelt. Das klappt auch soweit recht zuverlaessig, allerdings nur ein einziges Mal. Sobald ich mich auslogge, wird bei mir clientseitig der Tunnel abgebaut. Ein erneuter Verbindungsversuch startet einen neuen Client, aber dieser kann nicht mehr mit dem urspruenglichen Server connecten:

Jun 24 13:40:01 bierserv hts[19108]: tunnel_write_data: write error: Broken pipe
Jun 24 13:40:01 bierserv hts[19108]: tunnel_write_request: couldn't write request: output is disconnectedWie muss ich denn vorgehen, wenn ich einen Tunnel mehrfach nutzen will? Eine moegliche Loesung ist zB., den Server neu zu starten. Dann kriege ich sofort wieder einen Connect. Aus einleuchtenden Gruenden ist das nicht sonderlich praktikabel.

Gruss Pit.

Doh!
24.06.03, 22:39
Ich weiß zwar nicht wie das Programm funktioniert, aber ich nehme an, die Firewall ist so Konfiguriert, dass auf Remote Hosts der Port 80 ((HTTP) erlaubt ist, während auf der lokalen Maschine irgendein Port über 1024 erlaubt ist. Wenn Du nun die erste Verbindung via HTTP auf-machst, dann lauscht wohl Dein Server zu Hause auf Port 80 auf eingehende ssh-Verbindungen von beliebigen Clientports > 1024. Dein erster Client nimmt von mir aus lokal Pot 1025 und verbindet sich auf Port 80 auf Deinem Server. So, wenn Du nun einen zweiten Tunnel aufmachen willst, so muss Deine Clientmaschine einen anderen Port als 1025 benutzen, ebenfalls mit Zielport 80 auf Deinem Server. Wie das bei Deinem Client geht, musst Du halt selber rausfinden. Wenn Du z.B. Putty verwendest isses ja einfach.

pibi
25.06.03, 14:21
Kurze Beschreibung der Funktionsweise hts/htc:

Ich starte hier das Clientprogramm. Dadurch werden alle Aufrufe an ssh benutzername@localhost eingepackt in einen http-Call (sourceport 80) und inkl. Authentifizierung an den Proxy geschickt. Dest-Adresse ist mein Server zuhause. Diese gehen problemlos durch.

Meine Firewall laesst nun anfragen von dieser einen einzigen IP-Adresse an Port 80 durch (ich habe keinen http-Server laufen). Das entsprechende Gegenstueck (Serverprogramm) lauscht nun auf eingehende Requests auf Port 80 und leitet sie auf Port 22 um. Das ist mein ganz normaler SSH-Daemon. Dann noch schnell das Passwort eingeben und ich bin drin.

Soweit so gut, aber eben immer nur ein einziges Mal nach dem Start des Serverprogrammes. Oder wenn man genug lange wartet (ein paar Tage) und dann ein paar Mal vom Client aus hintereinander probiert, schlaegt irgendein Timeout zu ("connection closed by remote" oder so) und es klappt auch. Aber das kann ja nicht die Loesung sein, ich moechte meinen Client hier naemlich gerne abschalten oder mal ein anderes BS booten koennen.

Gruss Pit.

Doh!
25.06.03, 22:14
Also, hab' was im Netz gefunden:
http://www.jfranken.de/homepages/johannes/vortraege/ssh3.de.html

Ganz offensichtlich war der Programmierer bisher zu faul, die Funtionalität zu implemnetieren, dass mehrere Verbindungen gleichzeitig über den Tunnel laufen können. Der Servercrash ist wohl auf einen Bug zurückzuführen, wird auch auf der Seite erklärt.

pibi
26.06.03, 07:55
Original geschrieben von Doh!
Also, hab' was im Netz gefunden:
http://www.jfranken.de/homepages/johannes/vortraege/ssh3.de.html
Recht gute und informative Seite. Das wird wohl meine Probleme erklaeren. Vielen Dank fuer diesen Hinweis.

Als naechstes werde ich mir wohl ein Script basteln, welches zB. anhand einer Semaphore erkennt, dass der hts neu gestartet werden muss.

Gruss Pit.