PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Howto: Windows Fernsteuerung durch einen Linux Rechner, reverse connect



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.

Newbie314
13.12.09, 21:47
Die Windows Firewall spielt neuerdings "personal firewall" und fragt nach wenn der VNC Server gestartet werden soll.

Lösung 1 wäre nach dem start WinVnc -run ein "pause" in die Batch Datei einzufügen, und den Hilfesuchenden zu bitten nach dem Klicken von "OK" (Windows Firewall) den "Any Key" (Eingabeaufforderung) zu drücken.

Lösung 2: da bin ich noch dran: der Grund der Rückfrage durch die Windows Firewall liegt darin dass tightvnc nach dem Start automatisch auf einem Port nach hereinkommenden Verbindungen lauscht. Wenn man in der entsprechenden Registerkarte dieses Verhalten abstellt kommt der Dialog nicht mehr.

Leider fand ich keine Kommandozeilenoption mit der man dem Server verbieten kann zu lauschen. Wenn jemand eine findet bitte melden...

Ich habe vor mich mit den Entwicklern in Verbindung zu setzen, so eine Option wäre echt gut.




Punkt 3: habe heute das ganze mal im lokalen Netz mit zwei Windows Kisten (XP Home) getestet: um den vncviewer im Listen Modus benutzen zu können muss der WinVnc.exe Server laufen.

Das mit dem -listen ging nicht so richtig von der Kommandozeile aus, man musste in den Guis mit Klicks und Fenstern den richtigen Port einstellen.


Auf dem vncviewer (client) Rechner musste ich die Windows Firewall ausschalten damit es überhaupt funktionierte, außerdem scheint die Windows Firewall nach den letzten Updates automatisch "Ping" zu unterdrücken, mit anderen Worten die Windows Firewall wird "immer Zone-Alarmiger" :ugly:

Newbie314
26.01.10, 08:27
Habe jetzt Antwort vom Entwickler (ich hatte nach einer -nolisten Option für den Server gefragt):



Hello $MeinName,

Currently, we are working on a major new version of TightVNC Server for
Windows. It still will not have such a feature, but we will think how it
would be possible to adapt TightVNC for remote assistance.

--
With Best Wishes,
Constantin
http://www.tightvnc.com/


Ich beobachte das mal und werde hier eine Aktualisierung einfügen wenn sich durch die neue Version etwas ändert.

Newbie314
01.05.10, 10:24
Update:

Von TightVNC kam nichts mehr, statt dessen dürfte für Privatanwender die Anwendung von Teamviewer viel einfacher sein:

http://www.linuxforen.de/forums/showthread.php?t=267403

(Für Profis auch, aber die müssen dafür bezahlen....)

derRichard
01.05.10, 12:40
hi!

bei teamviewer ist halt das große problem, dass die kostenlosen sitzungen eine zeitliche beschränkung haben. (30 oder 60minuten wenn ich nicht irre).

gibt es vielleicht in richtung rdp eine lösung?
wäre super.

//richard

Newbie314
01.05.10, 14:04
Ah.. dann werde ich das Projekt hier doch wieder aufnehmen....

Für die kurze Zeit ist Teamviewer definitiv einfacher... dass die jetzt schon mit solchen Einschränkungen anfangen überrascht mich.. an Stelle der Hersteller hätte ich erstmal keine Einschränkungen implementiert bis Teamviewer eine Art Standard ist ;-)

Da TightVNC unter Windows Registryeinträge ändert würde ich jetzt wieder mit UVNC experimentieren...

Soweit ich informiert bin ist der Remote Desktop nicht kompatibel.. selbst wenn: ich würde auf dem Rechner eines Laien keine "offene Verbindung" ins Internet installieren.. daher der ganze Aufwand mit "reverse connect"...., d.h. Remote Desktop geht erst wenn man ihn auch per "Reverse Connect" umsetzen kann.

Newbie314
13.06.10, 22:04
Mittlerweile haben mein Bruder und ich meinen Eltern ein neues Laptop "aufgedrückt".

(Das alte Medion 128 Mb mit Windows XP .. das macht keinen Spaß und ist mittlerweile einfach zu wartungsintensiv .. :D )

Auf der Kiste ist Windows 7 drauf, was mir bis auf ein paar Kleinigkeiten (die ich bestimmt auch noch herausfinde) ganz gut gefällt.


Mittlerweile ist darauf Tightvnc so installiert, dass bei Anklicken des Icons per Curl ein start-skript (in das ich vorher meine IP eingetragen habe) von meinem Webserver geladen wird, und Skype gestartet, sowie die VNC Verbindung zu meinem Linux Rechner aufgenommen wird.

Eltern haben PC Problem=> rufen an => ich stelle das Skript mit meiner gegenwärtigen IP in meinen Webserver (will nicht bei dyndns mitmachen..) => Eltern klicken Icon auf Desktop => wir sind per Skype und VNC verbunden...

Sollte Interesse bestehen bitte hier posten, dann werde ich die Skripte hier einstellen.

Bei Windows 7 muss allerdings in der Windows "Firewall" eingestellt werden dass tightvnc auf das Internet zugreifen darf. Sonst geht gar nix.


Da ich hauptsächlich meinen Eltern bei PC Fragen helfen will ist diese Lösung für mich ausreichend. Angesichts dessen dass die Windows "Firewall" unbekannten Programmen verbietet sich mit dem Internet zu verbinden dürfte die ursprüngliche Lösung per UVNC etc. zu unpraktisch sein um Anfängern am anderen Ende damit zu helfen.

Ob das neue Windows "Firewall" verhalten die Schadprogramme beeindruckt bleibt dagegen abzuwarten. :ugly:

Newbie314
15.11.13, 22:56
Edit: UVNC SC scheint die Funktion jetzt vollständig zu beherrschen.. statt dessen müsste man zur Verwendung von Tightvnc erst mal die .msi Dateien "zerlegen".

Die Variante mit dem vorinstallierten TightVNC funktioniert übrigens nach wie vor... (ich ziehe sie dem Teamviewer nach wie vor vor..).