ssh-tunnel
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| ssh-tunnel [2018-06-25 12:11:30] – [ssh-Tunnel HOWTO] manfred | ssh-tunnel [2018-06-25 14:50:55] (aktuell) – [Remote port forwarding] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== SSH-Tunnel ====== | ||
| + | |||
| + | |||
| + | ===== ssh-Tunnel HOWTO ===== | ||
| + | |||
| + | * [[https:// | ||
| + | |||
| + | Dieses HOWTO beschreibt, wie man einen SSH-Tunnel über ein Gateway zum Zielrechner aufbaut um zum Beispiel SVN darüber laufen zu lassen. Das Verfahren wird manchmal auch "port forwarding" | ||
| + | |||
| + | Angenommen ein SVN-Repository war früher im Internet via HTTPS erreichbar, doch der Betreiber entschied sich dazu nur noch anfragen aus dem (entfernten) Netzwerk zuzulassen. Wenn man sich nicht bereits in diesem Netz befindet würde man sich üblicherweise per VPN ins entfernte Netz einfwählen und wie gewohnt weiterarbeiten. Möchte man allerdings nicht extra für einen Dienst ein VPN betreten, kann man diesen Dienst auch über SSH tunneln. | ||
| + | |||
| + | |||
| + | ==== Tunnel aufbauen ==== | ||
| + | |||
| + | Das Kommando | ||
| + | # ssh -4L lokalerport: | ||
| + | |||
| + | erzeugt nach erfolgreichem login auf dem Rechner " | ||
| + | Alle Anfragen an Port " | ||
| + | |||
| + | In dem folgenden Beispiel leiten wir alle Anfragen vom lokalen Port 7777 über den Rechner " | ||
| + | # ssh -4L 7777: | ||
| + | |||
| + | Nun ist man per SSH auf dem Rechner " | ||
| + | Soll die Verbindung automatisch aufgebaut werden, dann kann man das z.B. mit dem Programm '' | ||
| + | # screen -dmS sshtunnel ssh -4L 7777: | ||
| + | |||
| + | |||
| + | ==== SVN-Arbeitskopie anpassen ==== | ||
| + | |||
| + | Da der " | ||
| + | # svn switch --relocate https:// | ||
| + | |||
| + | Ein anschließendes | ||
| + | # svn up | ||
| + | |||
| + | Sollte nach ein paar eventuellen Fragen über den " | ||
| + | |||
| + | |||
| + | ===== Port forwarding ===== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ==== Local port forwarding ==== | ||
| + | |||
| + | Wenn ich auf dem Rechner " | ||
| + | # ssh -g4L 4321: | ||
| + | |||
| + | aufrufe, dann baut SSH eine Verbindung zum Rechner " | ||
| + | Der Rückweg funktioniert entsprechend. | ||
| + | |||
| + | Der Aufruf von " | ||
| + | |||
| + | Man muss auf " | ||
| + | |||
| + | Wenn man den Parameter '' | ||
| + | Sie müssen dann also auf dem selben Rechner sein, wie der SSH-Client, oder aus einem anderen Tunnel dorthin umsteigen. | ||
| + | |||
| + | Sollen die Benutzer auf dem SSHD-Rechner keinen Shellzugriff, | ||
| + | |||
| + | Wer zusätzlich einen keepalive einbauen möchte, damit die Natting-Tabelle der Firewall im Leerlauf die Tunnels nicht kappt, schreibt an den Beginn der Publickeyzeilen jeweils: | ||
| + | command=" | ||
| + | |||
| + | Um die möglichen Portforwoarding-Ziele zu beschränken, | ||
| + | z.B.: | ||
| + | permitopen=" | ||
| + | |||
| + | |||
| + | ==== Remote port forwarding ==== | ||
| + | |||
| + | Wenn ich auf " | ||
| + | > ssh -R 9030: | ||
| + | |||
| + | eingebe, dann nimmt SSHD auf " | ||
| + | Der Rückweg funktioniert entsprechend. | ||
| + | Somit haben wir einen Tunnel von '' | ||
| + | |||
| + | Wer im Browser " | ||
| + | |||
| + | Man muss auf " | ||
| + | Wer den Rootzugriff per SSH nicht erlauben möchte, kann den SSH-Tunnel auf einen hohen Port (z.B. 9030) legen und (wenn nötig) mit xinetd, netcat oder Firewallregeln auf Port 80 umleiten. | ||
| + | |||
| + | Dies leisten folgende: | ||
| + | # vi / | ||
| + | | ||
| + | 80 stream tcp nowait nobody /bin/nc /bin/nc -w 3 localhost 9030 | ||
| + | |||
| + | oder | ||
| + | |||
| + | # vi / | ||
| + | | ||
| + | service intranet | ||
| + | { | ||
| + | type = UNLISTED | ||
| + | flags = REUSE | ||
| + | socket_type | ||
| + | protocol | ||
| + | user = root | ||
| + | wait = no | ||
| + | instances | ||
| + | port = 80 | ||
| + | redirect | ||
| + | disable | ||
| + | } | ||
| + | |||
| + | oder ein Firewallscript: | ||
| + | |||
| + | # echo 1 > / | ||
| + | iptables -F -t nat # Flush existing translation tables | ||
| + | iptables -t nat -A PREROUTING -p tcp --dport 9030 -j DNAT --to localhost: | ||
| + | iptables -t nat -A POSTROUTING -j MASQUERADE | ||
| + | |||
| + | Der SSHD bindet die remote Tunnel in seiner Standardkonfiguration an das loopback-Interface; | ||
| + | Wer möchte, dass seine Tunnel auf allen Netzinterfaces erreichbar sind, trage in der ''/ | ||
| + | |||
