Änderungen:
26. August 2004 (Hinweis auf Probleme mit der fli4l Developer Version (bis einschließlich 2.1.6) hinzugefügt)
Um PCs fernzusteuern muss eine Software auf ihnen installiert sein, die das ermöglicht. Hier wird VNC / TightVNC benutzt, das man sich kostenlos im Netz besorgen kann. Ich empfehle TightVNC.
Ist der VNC-Server gestartet, lauscht er auf dem TCP-Port 59XX. XX steht hierbei für unterschiedliche Display-Nummern. Beim 'normalen' Windows (alle außer dem Terminal Server) kann immer nur ein Benutzer angemeldet sein, also gibt es nur ein Display. Dieses bekommt die Nummer 0. Der Port 5900 ist folglich derjenige, auf dem ein VNC-Server für Windows lauscht.
Möchte man diesen PC fernsteuern, dann muss man eine Verbindung zu diesem Port herstellen.
Die Rechner hinter dem Router sind aber nicht direkt aus dem Internet ansprechbar, da sie über keine öffentlichen IP-Adressen verfügen. Man könnte Ports vom Router auf die Client-Rechner weiterleiten, so dass man diese Rechner trotzdem von außen erreichen kann. Da VNC die Daten unverschlüsselt überträgt ist das aber eine sehr schlechte Lösung.
Um die Übertragung abzusichern, kann man SSH (Secure Shell) verwenden.
Mit Hilfe eines SSH-Servers auf dem Router und einem SSH-Client auf dem Rechner, der als Fernbedienung dienen soll, kann man sogenannte SSH-Tunnels aufbauen. Die Tunnel selbst bestehen (wie herkömmliche Tunnel auch) aus einem Ein- und einem Ausgang. Wandern Daten durch diese Tunnel, dann sind sie vor dem Zugriff durch Dritte geschützt. Durch einen solchen Tunnel kann man die VNC Daten schleusen. Der Eingang ist in unserem Fall ein Port auf dem Rechner, der die anderen Rechner fernsteuern soll. Der Ausgang des Tunnels ist der Router.
Das schöne daran ist, dass für den Router alle Rechner ansprechbar sind. Es gibt also keine Probleme mit nicht öffentlichen IP-Adressen.
Wenn man die SSH-Verbindung so konfiguriert, dass Daten, die aus einem SSH-Tunnel kommen an einen VNC-Server-Rechner weitergeleitet werden, ist man am Ziel.
Ist ein solcher Tunnel aufgebaut, dann nimmt ein TCP-Paket vom "Fernbedienungsrechner" folgenden Weg: VNCviewer (die VNC Client Applikation) schickt dieses an einen zuvor festgelegten lokalen Port. Auf diesem wartet der SSH-Client auf eingehende Pakete. Er verschlüsselt die Daten und schickt das Paket per Internet an den Router. Der SSH-Server auf dem Router entschlüsselt die Daten und leitet das Paket an den zuvor festgelegten Ziel-Rechner (und Ziel-Port) weiter. Beim Ziel handelt es sich nun um einen interne IP-Adresse, die aber vom Router aus problemlos zu erreichen ist.
OPT_SSHD='yes' # install SSHd: yes or no SSHD_PORT='8645' # SSH port, see also FIREWALL_DENY_PORT_x
Normalerweise läuft SSH auf dem Port 22. Man kann aber jeden nehmen. Ich habe einen anderen gewählt. Für den Fall, dass eine Sicherheitslücke im eingesetzten SSH-Daemon entdeckt wird, kann man so der ersten Angriffswelle entgehen, die meistens auf den Standard-Port gerichtet ist. (Ich bin halt etwas paranoid.)
unter Connection->SSH kann man bei Protocol Options mit einem Häkchen bei Enable compression noch die Kompression für den Tunnel einschalten. Das sollte die Verbindung beschleunigen, aber ich habe bisher keine Verbesserung bemerkt.
unter Connection->SSH->tunnels richtet man jetzt folgende SSH Tunnel ein:Es bietet sich an, als Tunneleingänge die Ports 59XX zu nehmen, da man diese später bei der Konfiguration des VNCviewers über die Displaynummer ansprechen kann. (Port 59XX entspricht dabei Displaynummer XX).
Dazu macht man folgendes:Man kann die SSH Authentifizierung auch über host/user keys machen, das macht das ganze "noch sicherer".
Nun startet man VNCviewer.exe.