So heute Nacht habe ich mir endlich mal die Zeit genommen mir ssh genauer anzusehen. Ich wollte das zwar schon viel frueher machen, bin aber irgendwie nie richtig dazu gekommen. Weil ich die Ergebnisse als fuer Andere auch wichtig erachte, hier mal eine kleine Doku, dann spart ihr sicher etwas Zeit und Geduld die ihr in eine andere Arbeit investieren koennt.
Tunnel soll Rechner:port direkt via localhost erreichbar machenBefehle: [1] ssh -L 8888:127.0.0.1:631 root@192.168.0.3 [2] konqueror localhost:8888 Befehl [1] wird auf myhost eingegeben und öffnet auf myhost den Port:8888 welcher mit 192.168.0.1:631 verbunden ist, wenn man [2] eingibt. Der Vorteil ist klar: nun kann man z.B. Cups konfigurieren, ohne das Administrationsinterface für das ganze Netzwerk freigeben zu müssen bzw man muss kein unsicheres X-Forwarding verwenden. Diagramm: | myhost | -------> |192.168.0.1| Aehnliche SzenarienBefehl [1] auf myhost eingebenben, oeffnet eine Verbindung zu ssh1. Wichtig ist aber, dass localhost:9999 nun mit einem Rechner hinter dem ssh gateway verbunden wird. So kann man z.B. shfs verwenden um mit einem Programm auf den Daten an der Uni zu arbeiten. Alternativ zu [2] kann nun naemlich [3] dazu verwendet die Daten im ~/ Homeverzeichnis lokal zu mounten. [1] ssh -L 9999:britney.informatik.uni-tuebingen.de:22 schiele@ssh1.informatik.uni-tuebingen.de [2] ssh schiele@localhost -p 9999 [3] shfsmount -p 9999 schiele@localhost /tmp/a/ (as root only!) und hier noch ein Beispiel, wie man den www-cache proxy von auserhalb verwendet. Wozu ist das gut fragen sich manche?! Ganz einfach: Nicht alle Webseiten sind von auserhalb des Uni-netzes erreichbar (z.b. manche seiten der Bib). [1] ssh -L 7777:britney.informatik.uni-tuebingen.de:22 schiele@ssh1.informatik.uni-tuebingen.de [2] konqueror (Proxy eintragen, www-cache.informatik.uni-tuebingen.de:3128) Im Browser muss dann nur noch der Proxy eingeschalten werden, eintraege wie oben und dann sollte das auch schon funktionieren. Tunnel soll Rechner hinter NAT erreichbar machenBefehl [1] wir auf einem Host myhost innerhalb des NATs ausfuehrt, z.b. im privaten Heimnetz welches hinter einem Router ist. Nun kann man vom Host serverkommune.de den Befehl [2] eingeben und landet dann hinter dem NAT direkt auf dem Host myhost am ssh-server. Mit Befehl [3] kann man sogar von irgendwo aus eine Verbindung zum myhost machen. [1] ssh -R 1099:localhost:22 joachim@serverkommune.de -N [2] ssh localhost -p 1099 [3] ssh serverkommune.de -p 1099 | myhost | -------> |firewall| <---------> (internet) <---------> serverkommune.de |<-- NAT bereich -->| Wie man im Diagramm oberhalb sieht, sind alle Pfeile bis auf den innerhalb des NATs in beide Richtungen gezeichnet und signalisieren, dass alle Rechner direkten Zugriff aufeinander haben. Innerhalb des NAT kann aber ein Rechner von ausserhalb nicht direkt angesprochen werden, weil innerhalb andere Adressen 192.168.0.0/24 verwendet werden (Class C Netze), welche von aussen nicht erreichbar sind. Nun will man aber teilweise trotzdem auf einen solchen Rechner:port zugreifen. Das geht dann indem man von innen auf einem Rechner auserhalb des NATs connected und einen Ruecktunnel aufmacht. Alternativ kann man natürlich in der Firewall auch ein Portforwarding machen mittels iptables und den SNAT,REDIRECT Regeln. Dank an Thomas Schreiner fuer den Tipp. NAT steht fuer Network Address Translation, siehe Wikipedia. Alternative ZugriffsmethodenMit konqueror direkt sftp nutzen: (fish ginge auch, aber sftp ist besser implementiert) sftp://schiele@ssh1.informatik.uni-tuebingen.de/ ssh und bandwidth limitingPut this into ~/.ssh/config where 50k is the limit for the connection. Host server1 Hostname server1-slow Port 222 proxycommand pv -q -L 50k | nc dettner.dyndns.org 222 An other approach could be to create an alias in ~/.bashrc which could may be look like this (untested) which of course would only work for ssh tunnels created using the ssh-slow alias: alias ssh-slow='ssh -o "ProxyCommand pv -q -L 50k | nc dettner.dyndns.org 222"' Links
![]() |