SSH zum Tunneln von VNC nutzen

Aus Joachim Schuster Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

SSH vorbereiten

SSH ist unter Linuxsystemen ein Dienst, der meist defaultmäßig gestartet wird. Daher gehe ich davon aus, dass auf einem Linuxsystem sowohl der Server, als auch der Client laufen und einsatzbereit sind. Unter Windows sieht das leider etwas anders aus. Will man einen Windows (NT)-Rechner als SSH-Server einsetzen, muss man sich mit Cygwin erst mal eine UNIX-Umgebung mitsamt den wunderbaren Tools einrichten. Bei der Installation von Cygwin muss man nur darauf achten, dass man OpenSSH und evtl. Pine (für den Editor Pico) mitinstalliert. Hat man die Installation erst mal geschafft, muss man den SSH-Dienst starten, so dass er in Zukunft beim Booten mitgestartet wird. Um die Sicherheit der SSH-Verbindung etwas zu erhöhen, kann man den Zugriff auf das System auf einzelne Benutzer (mit evtl. eingeschränkten Benutzerrechten) beschränken. Soll das ein zusätzlicher Benutzeraccount sein, so sollte man diesen vor der Konfiguration des SSH-Dienstes anlegen und zum Einrichten der Verzeichnisstrukturen einmal anmelden.

Nun kann man die Cygwin-Console starten, ins Verzeichnis /etc wechseln und dort

ssh-host-config

ausführen. Die folgenden Fragen mit yes bzw. beim Default-Wert für CYGWIN= mit Return beantworten. Anschließend muss man, wenn man den Zugriff auf bestimmte User einschränken möchte, die Datei /etc/sshd_config editieren. Diese Datei muss man aber vorher dem aktuellen Administratoraccount zuordnen, da der sie sonst nicht editieren darf. Dazu gibt man z.B.

chown ADMINISTRATOR /etc/sshd_config

ein. (ADMINISTRATOR muss durch den Administrator-Kontonamen ersetzt werden).

Hat man pico mitinstalliert, kann man nun

pico /etc/sshd_config

zum bearbeiten der Datei eingeben. Unter der Zeile # Authentication: trägt man nun folgende Zeile ein:

AllowUsers ALLOWED1 ALLOWED2

ein. (ALLOWED1 bzw. ALLOWED2 muss durch die Kontonamen der zu erlaubenden Benutzer ersetzt werden. Es können beliebig viele Kontonamen, durch Leerzeichen getrennt, angefügt werden.)

Jetzt kann man den Besitzer der Datei sshd_config wieder auf SYSTEM zurückändern:

chown SYSTEM /etc/sshd_config

Zuletzt muss man den Dienst nur noch starten:

net start sshd (bzw. cygrunsrv -S sshd)

Probleme mit dem Dienst

Bei Problemen mit dem Dienst kann man

cygrunsrv -E sshd
cygrunsrv -R sshd

zum Entfernen des Dienstes eingeben. Oder (mit Gewalt) im Task-Manager Prozesse aller Benutzer anzeigen aktivieren und den Prozess cygrunsrv.exe beenden.

Anschließend kann man mit

ssh-host-config

die Konfiguration und Einrichtung des Dienstes neu starten und mit

net start sshd (bzw. cygrunsrv -S sshd)

den Dienst neu starten.

VNC über SSH-Tunnel nutzen

Damit man von einem Client den Server über SSH-Tunnel per VNC bedienen kann muss man folgenden Befehl auf dem Client eingeben:

ssh user@server -L 5901:localhost:5900

Anschließend kann man den VNCviewer mit localhost und der Bildschirmnummer 1 starten, um auf den Server zuzugreifen. Das Kommando oben bedeutet, dass man sich per ssh mit dem user (muss auf dem Server existieren) am server (IP-Adresse, oder Rechnername) einloggt. Man wird nach dem Passowort des Useraccounts gefragt. Das -L leitet eine lokale Portanfrage am Port 5901 über die SSH-Verbindung an den Hostrechner, in diesem Fall localhost (also der Server selbst) an den Port 5900. Mit

ssh user@server -L 5901:localhost:5900 -L 5902:192.168.0.2:5900 -L 5903:192.168.0.3:5900

kann man mehrere Rechner im Zielnetzwerk erreichen. Dabei werden Anfragen am Port 5902 an den Rechner 192.168.0.2 im Zielnetzwerk geleitet. So kann man über eine einzige SSH-Verbindung zu einem PC im Zielnetzwerk weitere PCs darin angesprechen und per VNC verwalten.

Problem: Connection reset by peer

Leider erwartet die SSH - Verbindung in der Konsole Useraktionen. Da VNC ja keine Daten in der Konsole überträgt, wird die SSH-Verbindung aufgrund fehlender Useraktionen sicherheitshalber geschlossen. Nun ist es aber recht hinderlich, nach ca. 5 Minuten