so viel ist so veraltet, nur das x11vnc ist noch aktuell, kann darf man den rest löschen, frage an euch?

ich hab mal x11vnc geschrieben, also von mir aus darfst ;) Aber ob gelöscht werden darf, wart ma eine Woche, wenn sich keiner Meldet, machst es halt.

Vorwort

VNC ist ein Programm zum Fernsteuern verschiedener Betriebssysteme. Es bietet die Möglichkeit, bequem von Linux auf Windows PCs zuzugreifen und umgekehrt.

Das Tool ist zwar nicht das schnellste, mit einer LAN-Verbindung ist es aber vollkommen ausreichend. Für das Internet ist es erst ab 128kbit/s sinnvoll. Unter Linux fungiert der VNC-Server als eigenständiger X-Server (nicht bei x11vnc, das läuft einfach als user, keine config im System notwendig), der auch so konfiguriert werden kann, in der /etc/vnc.conf. Von der Auflösung, über Farbtiefe, bis zur .Xsession kann alles konfiguriert werden - hier ist eine Menge Spielraum für Optimierungen.

Fazit: Um "mal eben" unter Windows einen Linux-Desktop zu benutzen oder auf dem Windows-PC mit Office zu arbeiten, ist es eine sinnvolle Ergänzung zur Linux/Windows-Installation.

Programme

UltraVNC ist zu VNC kompatibel, man kann also auf einer Linux-Kiste ein VNC-Server laufen haben und diesen von einer Windows-Kiste mit UltraVNC fernwarten. Man sollte immer versuchen, die neusten Viewer und Server zu verwenden, so kann z.B. der alte VNC keine ENTER-Taste von Linux nach Windows senden, mit TightVNC (oder RealVNC) klappt dies jedoch

Tips & Tricks

x11vnc

Vorwort zur Geschwindigkeit und Clienten

Die Geschwindigkeit wird hautpsächlich vom Viewer eingestellt. Also der Client. Es ist hier noch von -bgr233 die Rede. Das störrt aber den eigentlich richtigen Aufruf des Viewrs beim Clienten, für mehr speed. Dabei werden die möglichen Protokolle bis hin zum RAW Modus (direkt) angewendet. Was halt extern auf dem Server angeboten wird, wird verwendet.

Da ich vnc tunnle in ssh habe ich dafür einen kleinen Script: /!\ Das erste Zeichen darf kein Leerzeichen sein beim Speichern, wiki bedingt

 #!/bin/sh
# Scriptname vnclocal
# Installation: Save /usr/local/bin/vnclocal  and chmod 755 /usr/local/bin/vnclocal

vncviewer -compresslevel 9  -quality 5 -encodings "copyrect tight hextile zlib corre rre raw" localhost
exit 0

In einem Windows kann man tightvnc benützen als Viewer.

x11vnc Fernwartungs-Script

Es wird x11vnc und xterm benötigt.

Auf dem HOST erstellt man ein Script in /usr/local/bin/fernwartung . Dieses Script funktioniert wie ein Flip/Flop, fernwartung on/off und wird kurz angezeigt. Ohne Passwort wird zuerst die Passwort Abfrage erzwungen. Mit Fernwartung scale kann man den Bildschirm verkleinern. Der entfernte Betrachter hat dann die Möglichkeit den ganzen Bildschirm zu sehen. Diese Einstellungen für passwort (verschlüsselt), und scale werden im Home gespeichert.

Man hat auch die Möglichkeit per ssh die Fernwartung zu installieren und die Daten selber in das UserVerzeichnis ~/.x11vnc zu kopieren, damit gleich Passwörter etc. stimmen. Und dann einfach in der Shell Fernwartung Enter um es zu aktivieren.

/!\ Die oberste Zeile darf beim Speichern in eine Datei, kein Leerzeichen am Anfang haben!

 #!/bin/bash
#scriptname: fernwartung
# This Programm ist a simple starter for the x11vnc Programm
# You need to install x11vnc and xterm
# copy it to /usr/local/bin/fernwartung
# chmod 755 /usr/local/bin/fernwartung
# chown root.root /usr/local/bin/fernwartung

cmd=$1

if [ -d $HOME/.x11vnc ]; then
echo "============================================================================================="
echo -n "Verzeichniss existiert ";echo -n $HOME;echo "/.x11vnc"
echo "In dieses Verzeichniss wird die x11vnc.log, x11vnc_passw, x11vnc_scale Datei geschrieben"
echo
echo "fernwartung help"
echo "============================================================================================="
else
echo "============================================================================================="
echo -n "Erstelle Verzeichniss ";echo -n $HOME;echo "/.x11vnc"
echo "In dieses Verzeichniss wird die x11vnc.log, x11vnc_passw, x11vnc_scale  Datei geschrieben"
echo 
echo "fernwartung help"
echo "============================================================================================="
mkdir $HOME/.x11vnc
echo 1 > $HOME/.x11vnc/x11vnc_scale
fi

scale=`cat $HOME/.x11vnc/x11vnc_scale`


if [ -z "$cmd" ]; then
        Var_x11vnc=`ps -C x11vnc | grep x11vnc`
                if [ -z "$Var_x11vnc" ]; then
                        cmd=on
                else
                        cmd=off
                fi

fi

if [ -z `cat $HOME/.x11vnc/x11vnc_passw` ]; then
        cmd=passw
fi

case "$cmd" in

off)
        killall x11vnc
        xmessage -center -timeout 1 " VNC Fernwartung OFF "
        ;;
on)     
                x11vnc -forever -scale $scale -rfbauth $HOME/.x11vnc/x11vnc_passw -o $HOME/.x11vnc/x11vnc.log &
                sleep 1 
                Var_x11vnc2=`ps -C x11vnc | grep x11vnc`
                if [ "$Var_x11vnc2" == "" ]; then
                        xmessage -center -file $HOME/.x11vnc/x11vnc.log
                else
                        xmessage -center -timeout 1 " VNC Fernwartung ON "
                fi
                ;;

passw)

        killall x11vnc
        xmessage -center -timeout 1 " VNC Fernwartung OFF "

        xterm -e '
            while [ -z "$Varb" ];do
                Vara=*
                while [ "$Vara" != "$Varb" ];do
                        echo "Passwort für x11vnc setzen"
                        echo -n "Passwort: ";read -s Vara;echo
                        echo -n "Passwort wiederholen: ";read -s Varb;echo
                        clear
                done
            done
            x11vnc -storepasswd $Vara $HOME/.x11vnc/x11vnc_passw
            '
            ;;
        
status)
        xterm -e '
        tail -f $HOME/.x11vnc/x11vnc.log
        '
        ;;


scale)
        killall x11vnc
        xmessage -center -timeout 1 " VNC Fernwartung OFF "
                
        xterm -e '
        echo "Verkleinerung Vergrösserung RemoteDesktop 1=Keine Veränderung"
        while [ -z "$Vara" ];do
        echo -n "Scale Faktor eingeben (default 1): "
        read Vara
        done                            
        echo $Vara > $HOME/.x11vnc/x11vnc_scale
        '
        #startup
                x11vnc -forever -scale $scale -rfbauth $HOME/.x11vnc/x11vnc_passw -o $HOME/.x11vnc/x11vnc.log &
                sleep 1 
                Var_x11vnc2=`ps -C x11vnc | grep x11vnc`
                if [ "$Var_x11vnc2" == "" ]; then
                        xmessage -center -file $HOME/.x11vnc/x11vnc.log
                else
                        xmessage -center -timeout 5 " VNC Fernwartung ON "
                fi
        ;;
        
help)
        echo "let it blank will automatic build password and turn on/off flipflop"
        echo 
        echo "or use this commands: on | off | passw | status | scale | help"
        ;;


esac

exit

Wenn die "Fernwartung" auf dem HOST läuft, dann genügt auf dem Fernwartungs-Client ein xtightvnc ip (Passwort Abfrage kommt automatisch). Die xtightvnc -bgr233 ip Option bringt auch noch viel speed,

Firewall Problem an Supporter lenken, mit -listen

Normalfall: Supporter tightvncviewer->Internet->Firewall Portforward (Kunde kann auch das portforward verändern, defekt)->Hilfesuchender startet nur x11vnc

Besser: Supporter tightvncviewer -listen<-Firewall Portforward (in deiner Kontrolle)<-Internet<-Hilfesuchender x11vnc -connect host (ip vom supporter)

Bei Firewall kann der Hilfestellende sein Tightvnc-Viewer (Windows) oder xtightvnc (Linux) auf -listen stellen (Vorausgesetzt der Hilfestellende weiß das Port 5900-590x zu portforwarden an sein PC), und man macht auf dem Host Rechner x11vnc -connect host (host1,host2 auch möglich, aber shared Option müsste dann noch mit angestellt werden), oder man kann auch x11vnc -connect_or_exit host.

vncviewer -listen <- Modem Portforward 5500 an vncviwer pc <-Internet <- Kundenpc x11vnc -connect IP (ip von vncviewer pc)

Zuerst SSH dann VNC Tunneln - Sicherer als VNC pur

Es empfiehlt sich Analog zu unten wegen Firewall beschrieben, auch bei freiem Zugang SSH zu benützen.

ssh -L 5900:localhost:5900 user@domainwas.dyndns.org

Und dann in der Remote Shell gleich das Script fernwartung-ssh-X starten (von Abschnitt unten).

Dann lokal nur noch vncviewer localhost, und man hat die grafische Fernwartung.

VNC ist nicht so save.

Man sitzt hinter einem geschlossenem 5900 und 22 Port mit Content Firewall, kein freier Zugang zum Internet

(Bsp. an Debian Wheezy) Dann braucht man einen freien Rechner im Internet, wo Port 443 noch frei ist (netstat -tl zeigt kein https an wo der Rechner horchen würde.) Mindestens ist bei Apache die default-ssl Site nicht aktiviert und das Modul SSL disabled (a2dissite default-ssl dann a2dismod ssl dann /etc/init.d/apache2 restart oder service apache2 restart). Dann kann man sshd auch auf 443 horchen lassen. Und vielleicht benützen wir diesen Rechner da draussen als Relais-Station für normale andere Aufgaben/Fernwartungen.

Wir machen das mal: editieren /etc/ssh/sshd_config

# What ports, IPs and protocols we listen for
Port 22
Port 443

Aktivieren: /etc/init.d/ssh restart

Eventuell ist es noch nötig Fail2ban für ssh (fail2ban link) anzupassen.

Nun kann man mit "ssh user@domain -p 443" drauf zugreifen aus der verzwickten Situation hinter der Firewall. Aber was ist mit 5900 für VNC? Also jetzt tunneln wir das mal, und weil es so lustig ist, gleich ein Proxy dazu, die müssen ja nicht sehen, was für Girls ich mir im Internet anschaue. Also auf dem Relais-Station Rechner gleich ein apt-get install tinyproxy, jedoch soll dieser nicht in die Öffentlichkeit. Also wir lassen nur Port 22 und Port 443 offen in der Firewall da draussen. 5900 und 8888 werden getunnelt.

apt-get install tinyproxy x11vnc

Jetzt kann ich hier in dieser Firma mit dem beschränkten Internetzugang folgendes starten.

ssh -L 5900:localhost:5900 -L 8888:localhost:8888 user@domainwas.dyndns.org -p 443

Erstens: Habe ich eine SSH Remote Shell

Zweitens: Sind 5900 und 8888 Port direkt bei mir als localhost jetzt erreichbar. Ich kann Firefox starten und den Proxy einstellen, localhost 8888, und mein Browsen geht über 443 raus (verschlüsselt).

Auf dem Relais-Station Rechner kann man jetzt noch ein Script anlegen wie folgt z.b. /usr/local/bin/fernwartung-ssh-X /!\ Die oberste Zeile darf beim Speichern in eine Datei, kein Leerzeichen am Anfang haben!

 #!/bin/bash
# Scriptname: fernwartung-ssh-X
# Fernwartung starten per SSH Shell 
# 
# Installieren:
# Kopieren nach /usr/local/bin/fernwartung-ssh-X
# chown root.root /usr/local/bin/fernwartung-ssh-X
# chmod 755 /usr/local/bin/fernwartung-ssh-X
#
# Benötigte Programme: x11vnc
# Scale: als Beispiel um die Grösse zu verändern
#
killall x11vnc
x11vnc -localhost -display :0 
#x11vnc -localhost -display :0 -scale 0.8
exit 0

Dann kann ich diesen in der RemoteShell starten, und hier bei mir dann vncviewer localhost genügt.

Tipp: Auf der Fail2Ban Seite ist die Config für ssh 443 gezeigt.

Das geht auch mit Putty, man kann SSH Tunnels machen auf die gleiche Weise in Windows-Mühlen, auch localhost 8888 für firefox dann, und tightvncviewer auch nur localhost angeben. Viel Spass

putty1Tunnel.jpgputty2Tunnel.jpg

Login Screen , ein gdm Manager wartet, keine User logged in

Dann kann man remote ssh drauf und das starten in dem terminal:

sudo x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

in der Kurzform die bei Tunneling von 5900 genügt:

sudo x11vnc -display :0 -auth /var/run/lightdm/root/:0

Crazy Stuff

Noch nie getestet: DOS http://josh.com/tiny/ zusammen mit xvncviewer ;)

Display :0 freigeben

Mit VNC 4 ist es möglich, die Ausgabe des lokalen X-Servers für einen anderen Rechner freizugeben. Damit hat man die Möglichkeit für Fernsupport. Die Realisierung erfolgt über eine der folgenden drei Möglichkeiten:

  1. Mit XFree86 4.x: es wird ein Modul vnc geladen (in XF86Config eintragen)

  2. Man baut einen VNC-enabled X-Server als Ersatz für den nativen X-Server
  3. Man benutzt x0vncserver, der den X-Server regelmäßig abfragt (ineffizient, aber einfach zu realisieren). Alternativen dazu, die ähnlich arbeiten sind x11vnc und x0rfbserver.

siehe auch http://www.realvnc.com/v4/x0.html

Manuelle Installation des vnc-Moduls für XFree86

VNC-Server hinter einer Firewall

Variante 1

Beim Kunden muss überlicherweise die Firewall geöffnet werden. Meistens Port 5900

Variante 2

Wenn der VNC-Server hinter einer Firewall sitzt und "kein Loch gebohrt" werden soll, so kann der Viewer im "Listen-Mode" gestartet werden. In diesem Fall initiiert der Server die Verbindung zum Client. Unter Windows geschieht die Kontaktaufnahme im Kontext-Menü (rechte Maustaste) des Server-Icons in der Startleiste ("Add new client") , unter Linux wird das Programm vncconnect (bei Debian im Paket vncserver) dazu auf dem Rechner mit dem VNC-Server gestartet.

oder:

In Windows TightvncViewer auf LISTENMODE, in Linux xtightvncviewer -listen (Vorausgesetzt der Hilfestellende weis das Port 5500 zu portforwarden an sein PC). Und beim Host x11vnc -connect host (host1,host2 auch möglich, wenn shard Option angestellt wird)

KDE-Desktop-Fernsteuerung

Wie im vorigen Kapitel erklärt, ist VNC jetzt auch fähig, den lokalen X-Server "zu übernehmen". Das ganze ist in KDE schon integriert.

Ablauf einer Fernsteuerung (Annahme, dass nur eine Telefonleitung für Gespräch oder Internetverbindung zur Verfügung steht):

Ferngesteuerter Rechner:

Steuernder Rechner:

Wichtig: Je nach Einstellung taucht auf dem ferngesteuerten Rechner eine Dialogbox auf, die die Erlaubnis abfragt, ob der Desktop ferngesteuert werden darf. Diese Antwort muss "ja" heißen, sonst wartet der "Steuermann" vergeblich.

GNOME Desktop-Fernsteuerung

Um anderen den Zugriff auf den eigenen Rechner zu geben muss man im Menü:

auswählen. Dort kann man dann wählen ob der Desktop freigegeben wird. Dabei kann man auswählen ob man bei einer Anfrage von aussen gefragt werden will. Bei jedem Versuch erscheint dann eine Abfrage, die man bestätigen muss. Oder man setzt ein Passwort. Dann wird man nicht gefragt und der VNC-Client muss das Passwort eingeben, das ihm mitgeteilt wurde.

remotedesktop.png screenshot der vino-preferences.

Ferntutor mit VNC

vgl. auch vnc-eye, iTALC

Ich benutze VNC, genauer TightVNC, die komprimierende Variante, um Bekannten aus der Ferne Hilfestellung bei Computerproblemen zu geben.

Ich richte für jeden "Klienten" eine Adresse bei einem dynamischen DNS-Service (siehe NameServer) ein, beispielsweise IchWillLernen.noip.org

Da allerdings das VNC-Protokoll keinerlei Verschlüsslung benutzt ist es ratsam, die Verbindung über SSH zu tunneln. Um herauszufinden wie man das macht, einfach mal Google fragen (Stichworte: VNC, SSH, Tunnel). siehe dazu VNC SSH HowTo.

Tritt ein Problem auf, werde ich telefonisch informiert. Der Freund verbindet sich mit dem Internet, startet aus einer X-Konsole den VNC-Server und dann einen VNC-Client

vncserver && vncviewer -shared localhost:1
# die Option -shared ist standard bei TightVNC und kann daher weggelassen werden.

Dann erscheint bei ihm auf dem Bildschirm eine KDE-Sitzung (kann natürlich auch anders konfiguriert werden) in einem Fenster.

Ich starte auf meinem Rechner in einer X-Konsole einen VNC-Client:

vncviewer -shared IchWillLernen.noip.org:1
# die Option -shared ist standard bei TightVNC und kann daher weggelassen werden.

Jetzt arbeiten ich und mein Freund auf der gleichen Session, d.h. jeder sieht die Aktionen des anderen (beide sehen das gleiche Fenster, die gleiche Maus) und jeder kann die Session bedienen (mit Tastatur und Maus).

Damit lassen sich "Fehler vorführen" und "korrekte Aktionen" demonstrieren.

Bei ISDN kann ich das Ganze mit dem 2. Kanal noch telefonisch kommentieren, bei Modemverbindungen öffne ich in der Session ein Textdokument und kommentiere schriftlich.

Und das ganze geht mit Modem noch erträglich, mit ISDN aktzeptabel, mit DSL ganz gut. Und in jedem Fall weniger aufwendig als 100 km Anreise...

Sichere Verbindung

Ich arbeite an homepc und will per ssh/vnc firmapc fernbedienen. Dabei geht die Verbindung über firmagate (Internet-Gateway/Firewall).

firmapc:~$ vncserver :0
#Als erstes startet man den vncserver auf dem firmapc (hier z.B. DISPLAYNummer = 0)

homepc:~$ ssh -L 5900:firmapc:5900 user@firmagate
# Dann baut man den SSH-Tunnel auf. Der vncserver lauscht auf Port 5900 + DISPLAYNummer,
# hier also 5900 + 0 = 5900
# firmapc muss von firmagate aufzulösen sein, ansonsten IP verwenden
# bei Verbindungen zu einem Rechner der mit Modem ans Internet angebunden ist, bietet sich
# noch Kompression an (Option -C):
# also z.B: homepc:~$ ssh -C -L 5900:firmapc:5900 user@firmagate

homepc:~$ vncviewer localhost:0
# Wäre DISPLAYNummber = 1, so müßte es
# z.B. homepc:~$ vncviewer localhost:1 heißen.

Bei der Verwendung von TightVNC bietet sich die -via option an. Diese Option erledigt den Aufbau des SSH-Tunnels unter Unix/Linux ohne vorher extra SSH aufzurufen. In diesem Beispiel befindet sich der Server auf dem Gateway.

# vncviewer -via USER@GATEWAY.COMP localhost:DISPLAY

Und wenn sich der zu erreichende Rechner im Netzwerk dahinter befindet, dann:

# vncviewer -via USER@GATEWAY.COMP IP-ADRESSE:DISPLAY

Hinweis:

Die Firewall auf firmagate muss nicht geändert werden: Das Forwarding übernimmt die von ssh auf homepc implizit gestartete ssh-Sitzung auf firmagate.

VNC-Sitzung aufzeichnen

Mit dem Tool vnc2swf (www) gibt es die Möglichkeit VNC-Sitzungen aufzuzeichnen als Macromedia_Flash (Endung: .swf). Es ist damit sogar möglich Audiodaten hinzuzufügen, so das Aktionen, die am Bildschirm zu sehen sind auch kommentiert werden können. Dies bietet sich natürlich für Schulungen an und stellt eine günstige Möglichkeit dar mit wenig Aufwand verständliche Dokumentationshilfen in Form von multimedialen Handbüchern zu erstellen.

Links

Siehe auch

VNC (zuletzt geändert am 2016-05-20 03:53:08 durch 178-82-198-142)