[linux-l] Tunnelbau mit SSH

Lutz Willek lutz.willek at belug.de
Fr Okt 14 13:45:30 CEST 2011


Am 14.10.2011 11:21, schrieb Andreas Schott:

> Zugang zum IPfire:
> ssh -p222 -X -L 54321:localhost:54321 meinserver.dyndns.org
> Dann Zugriff per SSH auf Windowsrechner:
>
> ssh -X -L 54321:192.168.1.10:3389 install at 192.168.1.10
> In der sshd_config sind aktiviert:

Deine ~./ssh/config, nicht die Serverconfig. Ich nehme an Du hast keine. 
Schlau machen kannst Du dich mit "man 5 ssh_config", hier online:
http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config

Also, Dein Ziel ist ja einen Port von Rechner 192.168.1.10 (windows) 
irgendwie zu Dir zu tunneln, Du hast aber keinen direkten Zugriff.

Fangen wir ganz einfach an und bauen das Stück für Stück aus.

Ausgangszustand, erst mal ohne Portweiterleitung:
lokal:~$ ssh -p222 -X meinserver.dyndns.org

--> das vereinfachen wir. Lege Dir auf Rechner "lokal" eine 
ssh-Konfiguration an:

lokal:~$ cat ~/.ssh/config
host                                    meinserver
         hostname                        meinserver.dyndns.org
         user                            Hier_Username_Eintragen
         ForwardX11                      yes
         Port                            222

Ab sofort reicht aus:
lokal:~$ ssh meinserver

Das nächste ist die Portweiterleitung. Ich nehme mal an Du möchtest 
Remotedesktop vom Windows-Rechner zu Dir holen, also den Port 3389 von 
192.168.1.10 haben.

Die Kommandozeile dazu wäre komplett:
lokal:~$ ssh -p222 -X -L3389:192.168.1.10:3389 meinserver.dyndns.org

(Das -X wird eigentlich hier nicht gebraucht..)

Das wird vereinfacht. Dazu wird die private ssh config ein wenig erweitert:

lokal:~$ cat ~/.ssh/config
host                                    meinserver
         hostname                        meinserver.dyndns.org
         user                            root
         ForwardX11                      yes
         Port                            222
	LocalForward			3389 192.168.1.10:3389

Du kannst dann von einer anderen Konsole aus von deinem lokalen Rechner 
aus auf den Remotedesktop des Windows-Rechners zugreifen:
lokal:~$ rdesktop localhost

Ist ja schon mal was, aber auch das lässt sich noch vereinfachen, so das 
die Verbindung automatisch wieder geschlossen wird, wenn nicht mehr 
gebraucht: (an die Gurus: Ja, das geht noch eleganter)
lokal:~$ ssh -f meinserver sleep 5 ; rdesktop localhost

Das ganze noch in einen Alias gespeichert: (Eintrag in die .bashrc)

alias rdp-meinserver="ssh -f meinserver sleep 5 ; rdesktop localhost"

Dann reicht ein:
lokal:~$ rdp-meinserver

Einfacher gehts nicht.

>>> 1. Wie kann ich prüfen, ob ein Tunnel erfolgreich aufgebaut wurde und er
>>> funktioniert?
>> Dazu müssen wir die Art des aufgebauten Tunnels wissen. Das erkennen wir
>> aus dem benutzten Kommando.

Indem Du den Tunnel benutzt :)

>>> 2. Gerne würde ich eine direkte Verbindung zum SSH-Server aufbauen, geht
>>> das?

Ja, auch das geht. Die Konfigurationsvariable wäre dann ProxyCommand. Ab 
hier darfst Du dann aber auch selbst nachlesen, beispielsweise hier:
http://sshmenu.sourceforge.net/articles/transparent-mulithop.html

(Sonst geht der Lerneffekt ja flöten...)

Tip: als erstes wieder ohne Tunnel probieren, wie im Beispiel. Danach um 
die Tunnel erweitern.

>>> 3. Kann ich über den Tunnel mehrere Verbindungen aufbauen?
>>>       z. B. RDP zu Server 1 und RDP zu Server2?

Ja, einfach indem Du in der config mehrere LocalForward angibst:
	LocalForward			1234 192.168.1.10:3389
	LocalForward			4321 192.168.1.11:3389

Das Kommando wäre dann:
> lokal:~$ ssh -f meinserver sleep 5 ; rdesktop localhost:1234 & rdesktop localhost:4321

lg Lutz



Mehr Informationen über die Mailingliste linux-l