Newbie314
03.12.09, 21:15
Einleitung:
Bei VNC (http://de.wikipedia.org/wiki/Vnc) verbindet sich normalerweise ein Helfender über ein VNC Client-Programm mit dem Rechner eines Hilfesuchenden. Dazu muss auf dem Rechner des Hilfesuchenden ein VNC Server laufen.
Dies heißt aber dass alle Firewall / Nat Konfigurationen auf Seiten des Servers / des Hilfesuchenden vorgenommen
werden müssen, was gerade bei Hilfe im Freundes / Verwandschaftskreis sehr unpraktisch ist.
Daher beschreibe ich hier eine Methode der "reverse connection" bei der der Server die Verbindung aufbaut, somit beim Hilfesuchenden keine Änderungen der Konfiguration nötig sind und vor allem nach Ende der Hilfestellung alle Ports wieder dicht sind.
Der Helfende muss bei sich natürlich ein "Port Forwarding" einrichten. Wer damit Schwierigkeiten hat sollte die Finger davon lassen anderen per Fernwartung zu helfen ;-)
Historie:
Dieses HowTo basiert auf einem C't Artikel von Johannes Endres in der C't 5 vom 18.5.2008. Dort wird beschrieben wie mithilfe von UVNC (http://www.uvnc.com/) und 7zip (http://www.7-zip.org/) unter Windows ein .exe erstellt werden kann, das dem Hilfesuchenden übermittelt wird, und von diesem gestartet eine VNC Verbindung zum Helfenden herstellt. Der Autor deutet in seinem Artikel an dass dies auch unter Linux funktioniert, in diesem Linuxforen-Thread wird die UVNC Variante behandelt: http://www.linuxforen.de/forums/showthread.php?t=248452
Wozu dieses Howto:
Die verwendete portable UVNC Server Variante wurde seit langem nicht weiterentwickelt. Ab TightVnc Version 1.3.9 funktioniert die Kommunikation zwischen diesem UVNC Server und TightVNC nicht mehr, so dass diese Art der Fernsteuerung von Linux aus nicht mehr machbar ist. Daher wird hier eine Variante beschrieben bei der TightVNC als Server (Hilfesuchender) und Client (Helfender) verwendet wird. Dies hat nicht nur den Vorteil auch mit neueren
VNC Programmen (geschlossene Sicherheitslücken(!)) zu funktionieren, sondern auch dass diverse Komprimierungsmethoden von TightVNC verwendet werden können.
Bei der Originalmethode hatte ich auch das Problem den Mauszeiger nicht zu sehen wenn der Hilfesuchende ihn bewegte. Dies ist jetzt auch behoben.
Der Nachteil: das .exe in der UVNC- Originalversion hatte 280 Kb, in der jetzigen TightVNC Version hat es 400 Kb.
Voraussetzungen:
Auf dem Linuxrechner muss tightvnc installiert werden (OpenSuse: Paket tightvnc), sowie 7zip (OpenSuse: Paket p7zip).
Los gehts:
Wir benötigen die Datei 7zS.sfx aus dem 7z Library Archiv auf dieser Seite: http://www.7-zip.org/download.html (sollte es damit nicht funktionieren verwendet die Datei aus dem "Ultra VNC-Single-Click-Server" Archiv bei Heise: http://www.heise.de/ct/08/05/links/124.shtml (dies kommt vom C't Originalartikel))
Wir benötigen auch die Dateien "WinVNC.exe" und "VNCHooks.dll" aus dem TightVNC Zip Archiv: http://www.tightvnc.com/download.php (Windows Archiv "Complete Executables, no installer")
Diese Dateien müssen alle in ein Verzeichnis.
Die Start-Batch Datei für den VNC Server muss auch dort erstellt werden:
Name: startVNC.bat
start WinVnc -run
ping 127.0.0.1 -n 4
rem wait 3 sec
start WinVnc -connect 127.0.1.2::42
wait
Wobei die 127.0.1.2 durch Eure IP (DynDns Adresse oder per www.wieistmeineip.de ermittelt) und die 42 durch den (TCP) Port über den die Übertragung laufen soll ersetzt werden muss. (Ich verwende absichtlich nicht den Standard Port 5500 falls jemand ausversehen eine alte .exe zur Fernwartung startet :D ).
Die Steuerdatei für das 7Zip Executable lautet:
7zconfig.txt
;!@Install@!UTF-8!
Title="Fernwartung Newbie314: Tightvnc (GPL)"
RunProgram="startVNC.bat"
;!@InstallEnd@!
.. und muss ins selbe Verzeichnis. (Bitte setzt Euren Namen wo "Newbie314" steht ein.
Das Executable erzeugen wir per Shellscript:
generate_hilfexe
#!/usr/bin/sh
7za a NewbieHilfe.zp startVNC.bat WinVNC.exe VNCHooks.dll
cat 7zS.sfx 7zconfig.txt NewbieHilfe.zp > NewbieHilfe.exe
Anwendung:
in startVNC.bat Eure IP eintragen, generate_hilfexe ausführen, die entstehende Datei NewbieHilfe.exe
dem Hilfesuchenden übermitteln (Achtung: web.de übermittelt keine Dateien mit .exe Endung.. also umbenennen..)
Feste IP im lokalen Netz, Portforwarding vom DSL Router (sowie eine Öffnung in IPtables!) habt Ihr eingerichtet, somit wartet Ihr mit dem Befehl
vncviewer -noshared -listen (42-5500) -bgr233 -compresslevel 3 -quality 7 -nocursorshape
( (42-5500) durch Eure Portnummer minus 5500 (tightvnc Besonderheit..) ersetzen!)
darauf dass der Hilfesuchende das Executable startet. Die Verbindung wird hergestellt.
(Ich habe absichtlich Komprimierungs-Optionen eingestellt damit die Verbindung flüssig läuft. Näheres dazu in der Tightvnc Dokumentation).
Beenden der Verbindung: rechts unten in der Taskleiste des Windows Rechners ist ein V auf schwarzem
Grund.. dort mit Rechtsklick und "TightVNC beenden", dann ist die Verbindung beendet und der Rechner des Hilfesuchenden wieder abgekoppelt/sicher.
Caveat: die TightVNC Verbindung ist nicht verschlüsselt. Also keine Passwörter oder Ähnliches eingeben... derartiges sollte der Hilfesuchende direkt vor Ort eintippen... auf dem Bildschirm des Hilfesuchenden
dürfen auch keine vertraulichen Daten sichtbar gemacht werden.... außerdem wende ich so etwas nur an solange / wenn eine telefonischer Kontakt besteht.
Getestet wurde dies übers Internet mit einem XP (SP3) Windows Rechner und einer OpenSuse 11.2 (Tightvnc 1.3.9).
Laut TightVNC Doku sollte es auch bei Vista / Windows 7 funktionieren. Der Hilfesuchende muss das Executable
jeweils im Dialog "Vertrauen Sie der Anwendung" freigeben....
Rückmeldungen bezüglich Vista / Windows 7 wären nett. Anmerkungen auch. Sollte dieser Artikel nützlich sein werde ich ihn bei Gelegenheit ins Englische übersetzen.
Bei VNC (http://de.wikipedia.org/wiki/Vnc) verbindet sich normalerweise ein Helfender über ein VNC Client-Programm mit dem Rechner eines Hilfesuchenden. Dazu muss auf dem Rechner des Hilfesuchenden ein VNC Server laufen.
Dies heißt aber dass alle Firewall / Nat Konfigurationen auf Seiten des Servers / des Hilfesuchenden vorgenommen
werden müssen, was gerade bei Hilfe im Freundes / Verwandschaftskreis sehr unpraktisch ist.
Daher beschreibe ich hier eine Methode der "reverse connection" bei der der Server die Verbindung aufbaut, somit beim Hilfesuchenden keine Änderungen der Konfiguration nötig sind und vor allem nach Ende der Hilfestellung alle Ports wieder dicht sind.
Der Helfende muss bei sich natürlich ein "Port Forwarding" einrichten. Wer damit Schwierigkeiten hat sollte die Finger davon lassen anderen per Fernwartung zu helfen ;-)
Historie:
Dieses HowTo basiert auf einem C't Artikel von Johannes Endres in der C't 5 vom 18.5.2008. Dort wird beschrieben wie mithilfe von UVNC (http://www.uvnc.com/) und 7zip (http://www.7-zip.org/) unter Windows ein .exe erstellt werden kann, das dem Hilfesuchenden übermittelt wird, und von diesem gestartet eine VNC Verbindung zum Helfenden herstellt. Der Autor deutet in seinem Artikel an dass dies auch unter Linux funktioniert, in diesem Linuxforen-Thread wird die UVNC Variante behandelt: http://www.linuxforen.de/forums/showthread.php?t=248452
Wozu dieses Howto:
Die verwendete portable UVNC Server Variante wurde seit langem nicht weiterentwickelt. Ab TightVnc Version 1.3.9 funktioniert die Kommunikation zwischen diesem UVNC Server und TightVNC nicht mehr, so dass diese Art der Fernsteuerung von Linux aus nicht mehr machbar ist. Daher wird hier eine Variante beschrieben bei der TightVNC als Server (Hilfesuchender) und Client (Helfender) verwendet wird. Dies hat nicht nur den Vorteil auch mit neueren
VNC Programmen (geschlossene Sicherheitslücken(!)) zu funktionieren, sondern auch dass diverse Komprimierungsmethoden von TightVNC verwendet werden können.
Bei der Originalmethode hatte ich auch das Problem den Mauszeiger nicht zu sehen wenn der Hilfesuchende ihn bewegte. Dies ist jetzt auch behoben.
Der Nachteil: das .exe in der UVNC- Originalversion hatte 280 Kb, in der jetzigen TightVNC Version hat es 400 Kb.
Voraussetzungen:
Auf dem Linuxrechner muss tightvnc installiert werden (OpenSuse: Paket tightvnc), sowie 7zip (OpenSuse: Paket p7zip).
Los gehts:
Wir benötigen die Datei 7zS.sfx aus dem 7z Library Archiv auf dieser Seite: http://www.7-zip.org/download.html (sollte es damit nicht funktionieren verwendet die Datei aus dem "Ultra VNC-Single-Click-Server" Archiv bei Heise: http://www.heise.de/ct/08/05/links/124.shtml (dies kommt vom C't Originalartikel))
Wir benötigen auch die Dateien "WinVNC.exe" und "VNCHooks.dll" aus dem TightVNC Zip Archiv: http://www.tightvnc.com/download.php (Windows Archiv "Complete Executables, no installer")
Diese Dateien müssen alle in ein Verzeichnis.
Die Start-Batch Datei für den VNC Server muss auch dort erstellt werden:
Name: startVNC.bat
start WinVnc -run
ping 127.0.0.1 -n 4
rem wait 3 sec
start WinVnc -connect 127.0.1.2::42
wait
Wobei die 127.0.1.2 durch Eure IP (DynDns Adresse oder per www.wieistmeineip.de ermittelt) und die 42 durch den (TCP) Port über den die Übertragung laufen soll ersetzt werden muss. (Ich verwende absichtlich nicht den Standard Port 5500 falls jemand ausversehen eine alte .exe zur Fernwartung startet :D ).
Die Steuerdatei für das 7Zip Executable lautet:
7zconfig.txt
;!@Install@!UTF-8!
Title="Fernwartung Newbie314: Tightvnc (GPL)"
RunProgram="startVNC.bat"
;!@InstallEnd@!
.. und muss ins selbe Verzeichnis. (Bitte setzt Euren Namen wo "Newbie314" steht ein.
Das Executable erzeugen wir per Shellscript:
generate_hilfexe
#!/usr/bin/sh
7za a NewbieHilfe.zp startVNC.bat WinVNC.exe VNCHooks.dll
cat 7zS.sfx 7zconfig.txt NewbieHilfe.zp > NewbieHilfe.exe
Anwendung:
in startVNC.bat Eure IP eintragen, generate_hilfexe ausführen, die entstehende Datei NewbieHilfe.exe
dem Hilfesuchenden übermitteln (Achtung: web.de übermittelt keine Dateien mit .exe Endung.. also umbenennen..)
Feste IP im lokalen Netz, Portforwarding vom DSL Router (sowie eine Öffnung in IPtables!) habt Ihr eingerichtet, somit wartet Ihr mit dem Befehl
vncviewer -noshared -listen (42-5500) -bgr233 -compresslevel 3 -quality 7 -nocursorshape
( (42-5500) durch Eure Portnummer minus 5500 (tightvnc Besonderheit..) ersetzen!)
darauf dass der Hilfesuchende das Executable startet. Die Verbindung wird hergestellt.
(Ich habe absichtlich Komprimierungs-Optionen eingestellt damit die Verbindung flüssig läuft. Näheres dazu in der Tightvnc Dokumentation).
Beenden der Verbindung: rechts unten in der Taskleiste des Windows Rechners ist ein V auf schwarzem
Grund.. dort mit Rechtsklick und "TightVNC beenden", dann ist die Verbindung beendet und der Rechner des Hilfesuchenden wieder abgekoppelt/sicher.
Caveat: die TightVNC Verbindung ist nicht verschlüsselt. Also keine Passwörter oder Ähnliches eingeben... derartiges sollte der Hilfesuchende direkt vor Ort eintippen... auf dem Bildschirm des Hilfesuchenden
dürfen auch keine vertraulichen Daten sichtbar gemacht werden.... außerdem wende ich so etwas nur an solange / wenn eine telefonischer Kontakt besteht.
Getestet wurde dies übers Internet mit einem XP (SP3) Windows Rechner und einer OpenSuse 11.2 (Tightvnc 1.3.9).
Laut TightVNC Doku sollte es auch bei Vista / Windows 7 funktionieren. Der Hilfesuchende muss das Executable
jeweils im Dialog "Vertrauen Sie der Anwendung" freigeben....
Rückmeldungen bezüglich Vista / Windows 7 wären nett. Anmerkungen auch. Sollte dieser Artikel nützlich sein werde ich ihn bei Gelegenheit ins Englische übersetzen.