Installieren eines SSH-Tunnels

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
maeru
Beiträge: 74
Registriert: 21.12.2009 19:15:07

Installieren eines SSH-Tunnels

Beitrag von maeru » 01.07.2010 17:52:16

Hallo Debianer,

Ich hab zu Hause einen Linux Rechner, der hinter einem Router (ergo hinter einer Firewall) hockt.
Nun möchte ich von unterwegs gerne auf diesen Rechner zugreifen (Fernadministration, shell, vnc, smb).
Auf dem Rechner selbst soll sshd laufen.
Zugriff sollte entweder über ssh oder putty gehen.
Hat irgendjemand gute Kenntnisse, wie so etwas funktioniert?
Bei Google habe ich leider kein adäquates Tutorial gefunden.
Port-Forwarding ist nach Möglichkeit bitte zu vermeiden, weil ich nicht an die Router-Konfiguration rankomme (nicht mein Router) und auch nicht weiß, ob der Router das unterstützt.
DynDNS hingegen würde ich benutzten.

Vielen Dank schonmal.

Gruß,
maeru

wanne
Moderator
Beiträge: 7622
Registriert: 24.05.2010 12:39:42

Re: Installieren eines SSH-Tunnels

Beitrag von wanne » 01.07.2010 22:31:18

Eigentlich ist eine solche Firewall ja darauf ausgelegt solche Dienste auch gegen den Willen des Nutzers zu verbieten.
Hier gibt's trotzdem mal ein paar (einfach umzusetzende) Ansätze: miredo verpasst dir eine IPv6 Adresse und bohrt sich durch fast jede Firewall.
Du kannst, wenn du irgendwo was externes am Internet hast, ein VPN vom Server aus nach da aufbauen. Und dann vom Client aus ebenfalls in das dortige VPN conecten.
Du kannst mal gucken ob der Router vielleicht irgendwelche UPnP Fähigkeiten hat (die sich ohne Admin PW bedienen lasen...)
Wenn du weißt wo der Client steht, von dem aus du conecten willst, gibt es Programme die dir den Port frei machen indem sie einen Verbindungsaufbau in die entgegengesetzte Richtung simulieren. Bestimmt gibt es sowas auch für SSH Getestet hab ich so was noch nicht und außerdem brauchst du dann am Client vollen Internetzugang. (Oder wider einen Server in der Mitte, der vermittelt.)
rot: Moderator wanne spricht, default: User wanne spricht.

wanne
Moderator
Beiträge: 7622
Registriert: 24.05.2010 12:39:42

Re: Installieren eines SSH-Tunnels

Beitrag von wanne » 01.07.2010 23:39:35

So noch eine ganz geniale Idee:
Richte dir deinen SSH-Server als Hidden Service in Tor ein. Tor sollte sich auf jeden Fall durch die Firewall zu schleusen lassen und ist einfach einzurichten.
Ich nehme an mit I2P oder freenet geht das bestimmt auch (die sind ja extra auf so etwas ausgerichtet). Ich hab die aber nie genutzt weil die mir recht kompliziert vorkamen.
rot: Moderator wanne spricht, default: User wanne spricht.

uname
Beiträge: 12480
Registriert: 03.06.2008 09:33:02

Re: Installieren eines SSH-Tunnels

Beitrag von uname » 02.07.2010 08:28:25

Solltest du im Internet z.B. einen vServer haben, so ist das ganze ziemlich trivial.

- SSH-Server zuhause horcht mindestens auf "localhost"
- auf vServer erlaubst du einem Benutzer Zugriff mindestens auf die Shell /bin/false (evtl. mit Key usw.)

- von zu hause baust du dauernd auf:

Code: Alles auswählen

ssh -N -R 2222:localhost:22 user@vserver


Das "-N" ist nur bei der Shell /bin/false notwendig, womit auf eine Shell verzichtet wird. Die Shell brauchst du in diese Richtung eigentlich nicht. Das System scheint dann nicht zu reagieren, ist aber richtig.

Nun bist du irgendwo, jedoch nicht zuhause. Du gehst per SSH auf deinen vServer und dann mit:

Code: Alles auswählen

ssh homeuser@localhost -p 2222
durch den Remote-Tunnel zu dir nach hause. Evtl. Fehlermeldungen für ~/.ssh/known_hosts musst du ignorieren. Ich habe ein Script, welches die Datei einfach löscht. Ich nutze das zur Fernadministration bei Leuten hinter DSL-Routern, die natürlich keine Routeranpassung für SSH durchgeführt haben. Die wissen nicht mal wirklich was SSH ist ;-)

Advanced:
Solltest du keinen vServer mit fester IP haben, so könntest du irgendwas mit DynDNS usw. bauen. Auch könnte dein Client zuhause jede Minute versuchen eine Verbindung aufzubauen, falls keine Verbindung aktuell möglich ist. Auch könnte er nach einem Sempaphor (Datei auf Webserver) zum Verbindungswunsch per "wget" suchen. Möglichkeiten gibt es genug.

Advanced2:
Mit Debianscreen kannst du dir das noch so zusammenbauen, dass die Shellsitzungen zuhause auch ohne Verbindung weiterlaufen. Auch kannst du mit zwei oder drei Personen administrieren (Person zuhause gibt z.B. Passwort ein ...)

Benutzeravatar
maeru
Beiträge: 74
Registriert: 21.12.2009 19:15:07

Re: Installieren eines SSH-Tunnels

Beitrag von maeru » 03.07.2010 12:31:06

@uname
Die Idee mit dem vServer ist zwar gut, aber nicht umsetzbar, da ich keinen Server habe...
Allerdings würde mich diese Lösung näher interessieren:
Advanced:
Solltest du keinen vServer mit fester IP haben, so könntest du irgendwas mit DynDNS usw. bauen. Auch könnte dein Client zuhause jede Minute versuchen eine Verbindung aufzubauen, falls keine Verbindung aktuell möglich ist. Auch könnte er nach einem Sempaphor (Datei auf Webserver) zum Verbindungswunsch per "wget" suchen. Möglichkeiten gibt es genug.
@wanne
Der Router hat UPnP

Vielen Dank für euren guten Vorschläge
Gruß,
maeru

uname
Beiträge: 12480
Registriert: 03.06.2008 09:33:02

Re: Installieren eines SSH-Tunnels

Beitrag von uname » 03.07.2010 20:11:09

Die Advanced-Lösung:

Das Problem ist, dass nicht dein Homenetzwerk das DynDNS nutzen muss, sondern der "mobile" Rechner. Ich gehe mal davon aus, dass du auch mit einem Linux-Rechner unterwegs bist und du dort nicht hinter einem Router bist bzw. auf dem Router das Forwarding aktiviert ist. Bei Windows habe ich keine wirkliche Idee. Wie gesagt, du musst den nicht vorhandenen vServer emulieren.

Der Linux-Rechner geht z.B. per pppoE oder sonst eine Einwahl online. Über DynDNS bekommt das System einen Hostnamen. Auf dem Server lässt du einen SSH-Server und einen Webserver laufen. Der Webserver sollte nur dann laufen, wenn ein Verbindungswunsch besteht. Er braucht keine sinnvollen Seiten bereitstellen. Alternativ kann man vielleicht auch irgendwie nur den SSH-Port abfragen, führt aber eher zu Timeout-Problemen.

Nun schreibst du für den anderen Rechner (der hinter dem komischen Router) einen minütlichen CRON-Job:

Code: Alles auswählen

wget http://meinserver.dyndns.org && ssh -N -R 2222:localhost:22 user@meinserver.dyndns.org
Achtung: Das funktioniert nur, wenn du zuvor SSH-Keys ausgetauscht hast

Wenn du nun unterwegs bist bekommst du eine DynDNS-Adresse und sowohl der Webserver als auch der SSH-Server sollten erreichbar sein. Nach einer Minute verbindet sich dein Client hinter der Firewall mit dem Server. Du kannst nun rückwärts mit

Code: Alles auswählen

ssh userhinterfirewall@localhost -p 2222
das System erreichen.

wanne
Moderator
Beiträge: 7622
Registriert: 24.05.2010 12:39:42

Re: Installieren eines SSH-Tunnels

Beitrag von wanne » 04.07.2010 01:32:07

maeru hat geschrieben: @wanne
Der Router hat UPnP

Vielen Dank für euren guten Vorschläge
Gruß,
maeru
Ich glaube das Programm upnp-router-control schaltet dir dann (glaube ich) Ports ohne routerPW durch.
rot: Moderator wanne spricht, default: User wanne spricht.

uname
Beiträge: 12480
Registriert: 03.06.2008 09:33:02

Re: Installieren eines SSH-Tunnels

Beitrag von uname » 05.07.2010 09:19:33

weil ich nicht an die Router-Konfiguration rankomme (nicht mein Router)
Der Router hat UPnP
Und wenn er sich so einfach wie ein Toaster bedienen lässt. Was bringt es, wenn man ihn nicht konfigurieren darf?

Gibt vielleicht ein Sid - Paket:

http://packages.debian.org/de/sid/upnp-router-control

Benutzeravatar
maeru
Beiträge: 74
Registriert: 21.12.2009 19:15:07

Re: Installieren eines SSH-Tunnels

Beitrag von maeru » 05.07.2010 21:07:38

@wanne und @uname
Ich hab jetzt mal Debianupnp-router-control installiert und festgestellt, dass UPnP zur Zeit ausgeschaltet ist :oops:
Jetzt muss ich erst mal warten bis mein toller Admin wieder da ist UPnP einschaltet (Das ist in einer Woche).

Um vielleicht meine Vorstellungen von der ganzen Sache vielleicht noch etwas zu präzisieren: Ich will mir damit eine Alternative zu TeamViewer basteln.
Bevor jetzt irgendjemand fragt, warum mir denn TeamViewer nicht reicht gebe ich hier mal ein paar Gründe an:
  1. Ein einziger Krampf aus verschachtelten Emulatoren: Wine + ia32libs
  2. Lediglich die Windows-Version in Wine
  3. Nicht Open-Source
  4. Nur für nichtkommerzielle Nutzung
  5. "Nag-Screens", die den Kauf des Produkt mehr oder weniger erzwingen wollen
  6. Horrende Preise für Lizenzen (für Ich-AG völlig unbezahlbar)
Derzeit habe ich leider keine Wahl, als damit anderen Leuten beizustehen, aber ich würde das ganze schon gerne etwas besser lösen. Deshalb würde ich dann eine kleine Sammlung an Skripten für SSH und VNC zusammenstellen, die den Leuten artgerecht in einer .exe servieren, sodass sie nur noch einen Doppelklick machen müssen, damit ich ihren PC "übernehmen" kann.

Gruß,
maeru

uname
Beiträge: 12480
Registriert: 03.06.2008 09:33:02

Re: Installieren eines SSH-Tunnels

Beitrag von uname » 06.07.2010 08:45:49

Verstanden habe ich dein Problem noch nicht. Möchtest du Windows- oder Linux- administrieren? Bist du hinter dem komischen Router oder die zu administrierenden Personen? Möchtest Du VNC durch SSH tunneln, weil es notwendig oder sicherer ist?
Horrende Preise für Lizenzen (für Ich-AG völlig unbezahlbar)
Das Geld für einen vernünftige Internet-Anbindung (DynDNS und Port-Forwarding oder vServer) solltest du schon investieren.

Ich habe mir auf meinem vServer eine SSH-Fernwartungslösung gebaut. Sie besteht eigentlich nur aus dem Paket Debianscreen und einem Restricted-User mit folgender Shell in /etc/passwd:

Code: Alles auswählen

#!/bin/sh
# Aufruf Client: ssh -R 2222:localhost:22 restricted@vserver
# Aufruf Admin vom Server: ssh clientuser@localhost -p 2222 
if [ -z $STY ];   then
  /usr/bin/screen -xRR;
else
  /usr/bin/screen -X hardstatus alwayslastline '[%H] %Lw%=%u %d.%m.%y %c '
  /usr/bin/screen -X aclchg $LOGNAME -x 'detach,screen,pow_detach'
  /bin/rm $HOME/.ssh/known_hosts 2> /dev/null
  echo -n "ssh "
  read eingabe
  /usr/bin/ssh $eingabe
fi
Auf dem Client (auch hinter einem DSL-Router) muss nur ein SSH-Server auf mindestes "localhost" laufen. Der Aufruf für den Client kann man über ein Script automatisieren, durch einen SSH-Keyaustausch kann man auf die Eingabe eines Passwortes verzichten.

Ich könnte mir vorstellen durch den Tunnel auch VNC zu ziehen, nicht selbst probiert.

Antworten