Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Virtual_Network_Computing (kurz VNC) ist eine Software, die den Bildschirminhalt eines entfernten Rechners (auf dem ein VNC-Server läuft) auf einem lokalen Rechner (auf dem ein VNC-Viewer läuft) anzeigt und im Gegenzug Tastatur- und Mausbewegungen des lokalen Rechners an den entfernten Rechner sendet. Damit kann man auf einem entfernten Rechner arbeiten, als säße man direkt davor. Unter Windows ist diese Funktion als Remotedesktop bekannt und ist besonders hilfreich, um einem Bekannten bei seinen Rechnerproblemen zu helfen, ohne vor Ort sein zu müssen. Es werden auch z.B. viele Dienstleistungen im IT-Bereich über das VNC-Protokoll ausgeführt.
Die großen Desktopumgebungen KDE und GNOME bringen komfortable Werkzeuge mit, um den eigenen Desktop über VNC freizugeben oder auf einen anderen Rechner zuzugreifen. Diese lassen sich einfach über eine grafische Benutzeroberfläche bedienen. Alternativ kann man aber auch einen eigenen VNC-Server installieren oder von der Konsole einen VNC-Viewer starten.
Alternativen sind das kommerzielle NX und FreeNX.
In puncto Sicherheit ist zu beachten, dass VNC vor allem für den Einsatz in einem internen Netzwerk konzipiert ist: Von Haus aus wird die Verbindung zwischen Server und Client nicht verschlüsselt. Spätestens wenn über VNC auch administrative Tätigkeiten durchgeführt werden, ist eine ungesicherte VNC-Verbindung über das Internet ein großes Risiko: Ein Angreifer könnte beispielsweise an das unverschlüsselt übertragene Administratorpasswort gelangen. Deswegen soll in diesem Artikel auch die Möglichkeit einer verschlüsselten Verbindung angesprochen werden.
Dies ist der Rechner, auf dessen Desktop zugegriffen werden soll.
Der VNC-Server lauscht auf TCP-Port 590x - wobei x für die Nummer des Displays steht. Dies ist in der Regel 0. Falls der Server-Rechner hinter einer Firewall (z.B. ein Hardware-Router) steht, muss der entsprechende TCP-Port (also z.B. 5900) weitergeleitet werden.
GNOME bringt einen eigenen VNC-Server namens Vino mit. Dieser ist bei der Installation von Ubuntu/GNOME schon dabei, kann aber auch über das Paket
vino
nachinstalliert [1] werden. Die Konfiguration und das Starten des Servers erfolgt das Programm vino-preferences über
"System -> Einstellungen -> Entfernter Bildschirm"
in Ubuntu 11.10 findet man die Einstellungen über:
"Dash -> Freigabe der Arbeitsfläche"
Wenn unter
"System -> Einstellungen -> Startprogramme"
"Entfernter Desktop" nicht aktiviert ist, wird der Vino-Server nicht gestartet. Den Server kann man auch manuell über das Terminal mit
/usr/lib/vino/vino-server
starten.
Unter dem Punkt "Sicherheit" sollte mindestens eine der beiden Sicherheits-Optionen aktiviert sein.
Von Ubuntu "Hardy Heron" 8.04 bis "Lucid Lynx" gibt es den Reiter "Fortgeschritten". Hier lassen sich weitere Einstellungen vornehmen. So kann man beispielsweise den Port, an dem der VNC-Server lauschen soll, ändern.
Ab Ubuntu "Lucid Lynx" 10.04 steht die Funktion "[ ] Netzwerkeinstellungen so ändern, dass Verbindungen akzeptiert werden" zur Verfügung. Falls man eine vertrauensvolle Person gebeten hat, einem per VNC (Remotedesktop) bei einem PC-Problem zu helfen, so kann man hiermit Ubuntu anweisen, automatisch die für VNC benötigte Portweiterleitung per UPNP im Router einzurichten.
Bei einigen Grafikkartentreibern, z.B. proprietäre von Nvidia und ATI, treten im Zusammenhang mit Vino und eingeschalteten 3D-Effekten Probleme auf. Meist bekommt der VNC-Client dann nur beim Verbindungsaufbau ein Bildschirmfoto des Servers übertragen, dieses verändert sich aber bei Aktionen nicht mehr (Maus- und Tastatureingaben werden also "blind" vom Client zum Server übertragen). Als Abhilfe können im Konfigurationseditor die 3D-Effekte abgeschaltet werden, siehe
diese Anleitung
. Alternativ kann für private Zwecke TeamViewer eingesetzt werden.
Auch KDE bringt einen solchen Server in der Standardinstallation mit. Alternativ kann er über das Paket
krfb
nachinstalliert [1] werden. Nach der Installation ist er unter
"K-Menü -> Internet -> Krfb - Arbeitsfläche freigeben"
zu finden. Um den Server zu starten, muss eine Einladung ausgesprochen werden. Im nächsten Schritt erhält man die IP, auf der der Server läuft und ein Passwort. Beides wird von einem Client benötigt, der sich verbinden möchte.
Bei diesem Server wird keine neue Session eröffnet, sondern die bestehende genutzt. Dadurch ist es möglich, in den laufenden Betrieb eines anderen Rechners "einzugreifen", obwohl ein Benutzer angemeldet ist.
Auf Systemen mit Fenstermanager, die keinen eigenen VNC-Server mitbringen, kann ein solcher zusätzlich installiert werden. Auch wenn die hauseigenen VNC-Server für bestimmte Anforderungen nicht ausreichen, kann dieser Weg gewählt werden. Dieser Abschnitt richtet sich vor allem an fortgeschrittene Benutzer. Einsteiger sollten der Einfachheit halber auf die oben genannten Möglichkeiten zurückgreifen.
Folgende Pakete müssen installiert [1] werden:
vnc4server (universe [2]) )
vnc-common (wird für das Programm vncpasswd benötigt )
vnc-java (multiverse, optional für Java-Clienten )
Alternativ kann man auch TightVNC
nutzen. TightVNC versucht VNC zu optimieren und neue Funktionen, Verbesserungen und Optimierungen gegenüber dem original VNC zu bieten. So eignet sich TightVNC besser, wenn der VNC-Server über DSL am Internet angebunden ist. Auch TightVNC kann man aus den Paketquellen installieren.
tightvncserver (universe [2] )
xtightvncviewer (universe )
tightvnc-java (universe, optional für Java-Clienten )
Falls der VNC-Server auf einem Ubuntu-Server installiert werden soll, muss zusätzlich folgendes Paket installiert werden.
xfonts-base
VNC und TightVNC teilen sich die selben Konfigurationsdateien.
Damit eine Verbindung hergestellt werden kann, muss noch im Terminal [3] ein Passwort eingestellt werden. Es ist darauf zu achten, einen lokalen Benutzer zu verwenden.
vncpasswd
Möchte man, dass die komplette Desktopumgebung - also GNOME oder KDE - des Benutzers, der VNC startet, geladen wird, so kann man dies in der Konfigurationsdatei /etc/vnc.conf des VNC-Dienstes für alle Benutzer des Systems definieren. Ist die Datei /etc/vnc.conf nicht vorhanden, muss sie mit root-Rechten aus /usr/share/doc/tightvncserver/examples/vnc.conf.gz nach /etc/vnc.conf extrahiert werden. Anschließend muss die Zeile
# $vncStartup points to a script that will be started at the very beginning. $vncStartup = "/etc/X11/Xsession";
einkommentiert werden. Von da an startet automatisch die Desktopumgebung, wenn ein Benutzer einen VNC-Server startet. Alternativ kann dies auch jeder Benutzer für sich selbst festlegen. Dazu muss man in der ~/.vnc/xstartup im Homeverzeichnis Folgendes eintragen
1 2 3 | #!/bin/sh unset SESSION_MANAGER exec /etc/X11/Xsession |
Oftmals soll nicht eine komplette Desktopumgebung geladen werden; dies würde recht viel Last erzeugen, nur damit eine Desktopumgebung bereit steht, deren Möglichkeiten kaum genutzt werden. Um dem VNC-Server einen bestimmten Fenstermanager zuzuweisen, muss die Datei ~/.vnc/xstartup editiert werden [4]. Im Original sieht die Datei so aus:
1 2 3 4 5 6 | #!/bin/sh [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & |
Um einen bestimmten Fenstermanager zu starten, ersetzt man einfach x-window-manager. Natürlich muss der Fenstermanager installiert sein. Man kann dort zum Beispiel gdm oder fluxbox eintragen. Mit "&" kann man weitere Programme hinzufügen, die automatisch mit gestartet werden sollen. Das Ganze sieht danach zum Beispiel so aus:
1 2 3 | x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
fluxbox &
firefox &
|
Hier werden der Fenstermanager Fluxbox und der Webbrowser Firefox gestartet.
Um den VNC-Server zu starten, wird einfach folgender Befehl im Terminal [3] eingegeben (man sollte sich die angezeigte Displaynummer merken!):
# Für vncserver vncserver # Für tightvncserver tightvncserver
Der VNC-Server sollte nicht mit kill beendet werden. Unter Angabe der Displaynummer bietet der VNC-Server eine eigene Kill-Routine:
# Für vncserver vncserver -kill :<Displaynummer> # Für tightvncserver tightvncserver -kill :<Displaynummer>
Um den VNC-Server bei jedem Booten des Rechners mitzustarten, empfiehlt sich die Erstellung eines Skripts, das in /etc/init.d/ gespeichert wird. Dazu mit Root-Rechten einen Editor [4] öffnen und dieses Skript, eine abgewandelte Version von linuxnetmag.com
, unter /etc/init.d/vncserver abspeichern.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | #! /bin/sh # Original: http://www.linuxnetmag.com/de/issue8/m8installation801.html # Author: Guenther Zander <g.zander@hamburg.de> # # /etc/init.d/vncserver this Script # /usr/bin/vncserver Program # # Check for missing binaries FOO_BIN=/usr/bin/vncserver test -x $FOO_BIN || exit 5 # User, unter dem der VNC-Server ausgefuehrt wird VNC_USER="<User>" export VNC_USER # Set HOME of User HOME="<Home-Verzeichnis des verwendeten Users>" export HOME # Set ID for Connections FOO_ID=1 case "$1" in start) echo -n "Starting Vnc-Server with Terminal-ID $FOO_ID " # Delete old PIDs rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.pid if [ -e $HOME/.vnc/$HOSTNAME:$FOO_ID.log ]; then cat $HOME/.vnc/$HOSTNAME:$FOO_ID.log >> /var/log/vncserver.log 2>&1 rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.log fi sudo -u $VNC_USER -H $FOO_BIN :$FOO_ID 2>&1 ;; # stop) echo -n "Shutting down Vnc-Server " $FOO_BIN -kill :$FOO_ID 2>&1 cat $HOME/.vnc/$HOSTNAME:$FOO_ID.log >> /var/log/vncserver.log 2>&1 rm -f $HOME/.vnc/$HOSTNAME:$FOO_ID.log ;; # restart) $0 stop $0 start ;; # *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac |
Die Variable VNC_USER bestimmt den auszuführenden User, HOME bestimmt, unter welchem Verzeichnis die Konfiguration und Logs des VNC-Servers gespeichert werden und FOO_ID bestimmt die Terminal-ID des VNC-Servers. Diese Variablen müssen den eigenen Wünschen entsprechend noch angepasst werden.
Das Skript benötigt, bevor es genutzt werden kann, noch die richtigen Rechte:
sudo chown root:root /etc/init.d/vncserver sudo chmod 0755 /etc/init.d/vncserver
Damit der VNC-Server auch wirklich bei jedem Systemstart geladen und bei jedem Abschalten ordentlich heruntergefahren wird, muss das Skript mit
sudo update-rc.d vncserver defaults
den Runlevels zugewiesen werden.
Eine komfortable und ressourcensparende Variante, eine VNC-Session zu starten ermöglicht die Verwendung von xinetd (für Informationen zur Installation und Einrichtung siehe xinetd). Hierfür wird das Starten des VNC-Servers von xinetd übernommen.
Diese Methode benötigt kein "init-script" für den VNC-Server. Sollte bereits eines vorhanden sein, nimmt man den Server dazu einfach mit
sudo update-rc.d -f vncserver remove
aus den Runlevels.
Um sich am System anzumelden, kann gdm (fast) genauso verwendet werden wie bei einer lokalen Authentifizierung. Damit dieser jedoch auch in einer Session mit Xvnc als X-Server startet, müssen noch ein paar Änderungen durchgeführt werden.
Dazu öffnet man mit einem beliebigen Texteditor mit Root-Rechten die Datei /etc/gdm/gdm.conf (bzw. /etc/gdm/gdm.conf-custom) und kommentiert folgende Zeile ein:
RemoteGreeter=/usr/lib/gdm/gdmlogin
Schließlich aktiviert man noch XDMCP, hierfür sucht man sich den Eintrag [xdmcp].
XDMCP ist unter Ubuntu 10.04 und Ubuntu 10.10 nicht möglich - siehe GDM.
Der Client ist der Rechner, der auf den entfernten Desktop zugreift. Dies geschieht mittels eines VNC-Viewers.
Vinagre ist ein VNC-Client, der erstmals in Ubuntu Hardy Heron 8.04 integriert ist. Man findet das Programm im Menü unter
"Anwendungen -> Internet -> Betrachter für entfernte Desktops"
Vinagre kann dank einer Bedienoberfläche mit Tabs - ähnlich wie bei Webbrowsern - gleichzeitig mehrere Verbindungen mit verschiedenen VNC-kompatiblen Servern aufbauen. Diese können auch als Lesezeichen abgespeichert werden. Sollte der Zugang zu einem VNC-Server ein Passwort benötigen, so wird dieses im GNOME_Schlüsselbund gespeichert. Des weiteren kann Vinagre dank Avahi im lokalen Netzwerk nach verfügbaren VNC-Servern suchen. (siehe Vinagre)
Für Verbindungen zu entfernten Rechnern bringt Ubuntu/GNOME das Programm tsclient mit, welches über das gleichnamige Paket
tsclient (nur bis Ubuntu 11.04)
installiert [1] werden kann und unter
"Anwendungen -> Internet -> Terminal Server Client"
zu finden ist. Dieses Programm erlaubt neben VNC auch Verbindungen über das "Remote Desktop Protocol" zu Windows-Servern.
Um eine Verbindung zu einem VNC-Server herzustellen, muss im Reiter "Allgemein" als Protokoll "VNC" ausgewählt werden. Der Rechnername ist die IP-Adresse bzw. der Hostname des Servers. Die anderen Felder können in der Regel freigelassen werden. Ein gegebenenfalls erforderliches Passwort wird nach dem Verbindungsaufbau abgefragt.
Falls das Protokoll "VNC" nicht auswählbar ist, muss das Paket
xvnc4viewer
nach installiert werden [1].
Um sich zu einem System zu verbinden, auf dem ein VNC-Server läuft, ist in der Standardinstallation von KDE das Programm krdc enthalten.
Um es manuell zu installieren, wird das Paket
krdc
benötigt [1]. Nach der Installation ist es unter
"K-Menü -> Internet -> Krdc - Verbindung zu Fremdrechner"
zu finden.
Neben VNC unterstützt es auch RDP (Remote Desktop Protocol) Verbindungen, wie sie beispielsweise bei Windows für die Desktopfreigabe benutzt werden.
Um eine Verbindung herzustellen muss in das Eingabefeld des Programms die IP-Adresse des Systems eingetragen werden, zu dem man sich verbinden möchte. Ist dieses ein VNC-Server, muss vor der IP vnc:/ eingetragen werden, handelt es sich um eine RDP-Freigabe, so ist es rdp:/ (Beispiel siehe Screenshot). Nach Klicken auf "Verbinden" wird versucht, das andere System zu erreichen; wurde ein Passwort vergeben, so muss es in das erscheinende Dialogfeld eingetragen und bestätigt werden.
Auf der Konsole steht der Befehl vncviewer aus dem Paket xvncviewer [1] zur Verfügung. Dieses ist bei einer Standardinstallation von Ubuntu bereits installiert. Die Verbindung zu einem VNC-Server kann mit dem Befehl
# Für VNC
vncviewer host:display
# Für TightVNC
xtightvncviewer host:display {Optionen} hergestellt werden. host ist dabei der Hostname oder die IP-Adresse des Servers, display die Nummer des angesprochenen Displays - in der Regel 0. Ist ein Passwort erforderlich, wird es nach der Verbindungsherstellung abgefragt. Falls der vncviewer nicht aus einer Konsole heraus gestartet wird (sondern beispielsweise aus einem Skript), wird das Passwort in einem kleinen Eingabefenster eingegeben. Damit nicht mehrere Benutzer gleichzeitig auf den VNC-Server zugreifen können, kann im TightVNC Viewer die Option -noshare gesetzt werden
Die Verbindung zwischen VNC-Server und -Client ist standardmäßig nicht verschlüsselt und somit nicht für eine Übertragung über das Internet zu empfehlen. Um dennoch eine sichere Verbindung zu ermöglichen, kann man einen SSH-Tunnel für die Verschlüsselung benutzen. Voraussetzung hierfür ist, dass eine SSH-Verbindung zwischen Server und Client hergestellt werden kann.
Der VNC-Viewer kann selbst einen SSH-Tunnel herstellen. Anschließend stellt er die Verbindung nicht zum Server her, sondern zu localhost, also dem eigenen Rechner:
vncviewer -via user@host localhost:0
host steht dabei für die IP-Adresse oder den Hostname des Servers, user für den Benutzernamen, mit dem die Anmeldung auf dem Server erfolgen soll.
Alternativ kann man den Tunnel auch selbst auf dem Client-Rechner herstellen:
ssh -N -L 5900:localhost:5900 user@host
Anschließend kann man sich wie gewohnt verbinden; zu beachten ist aber, dass man nicht den Rechnernamen oder die IP des anderen Rechners, sondern localhost angibt, da SSH die Daten an den anderen Rechner weiterleitet.
vncviewer localhost:0
Nun besteht eine gesicherte Verbindung zum VNC-Server.
Diese Art der Verbindung ist hilfreich, wenn der Hilfesuchende keinerlei Netzwerkkenntnisse besitzt und zudem hinter einem Router sitzt. Die Einrichtung ist sehr einfach, da der Hilfesuchende nichts einzurichten hat außer einer Paketinstallation.
Hier werden nur drei mögliche Wege zu einer VNC reverse connection beschrieben - es gibt noch einige mehr.
Der einfachste Weg läuft über Gitso. Hier muss man am wenigsten einstellen und man hat einen fast automatisierten Weg bis auf die Einstellungen bei einem eventuell vorhandenen Router des Helfenden.
Gitso ist leider noch nicht in den Paketquellen enthalten und muss per Hand installiert werden. Wenn man Gitso ausprobieren will, kann man Weg 2 & 3 vernachlässigen.
Der Helfende sollte sich vorab mit dem dem Thema DynDNS-Clients bzw. generell mit dem Thema DynDNS beschäftigt haben.
Man muss einen kostenlosen Account bei DynDNS
oder einem anderen Anbieter einrichten und darüberhinaus eine DynDNS besitzen. Zudem sollte der Helfende wissen, wie man sich, wenn man hinter einem Router sitzt, eine korrekte Portweiterleitung oder Portfreischaltung einrichtet. Meistens muss man - je nach Routermodell - Einstellungen für die DynDNS am Router vornehmen. Zu diesem Zwecke sollte man das Handbuch des Routers konsultieren. Wenn man diesen Weg beschreiten will, bitte unten weiterlesen unter "Weitere Schritte Weg 2 & 3"
Hier muss man keine DynDNS-Adresse einrichten, dafür hat man den Nachteil, dass man vor jeder Verbindung die IP des Helfenden (ggf. die seines Routers!) herausfinden muss - z.B. bei wieistmeineip.de
. Der Helfende muss dann jedesmal dem Hilfesuchenden mitteilen, wie die IP lautet. Dieser Umstand wird durch die DynDNS in Weg 2 umgangen. Der Helfer muss sich auch hier mit Portweiterleitung oder Portfreischaltung auseinandergesetzt haben, wenn er hinter einem Router sitzt, eine eventuelle DynDNS-Einrichtung am Router entfällt hier natürlich.
Folgende Pakete müssen installiert sein [1]:
beim Helfenden das Paket
xvnc4viewer
beim Hilfesuchenden das Paket
x11vnc
Nach der Installation und für jede weitere Verbindung muss der Helfende immer vor dem Hilfesuchenden, da sonst die Verbindung nicht aufgebaut werden kann, in seiner Konsole folgenden Befehl eingeben:
xvnc4viewer -listen 5500
Der Helfer hört kontinuierlich auf Port 5500, der im Router freigeschaltet sein muss, ob jemand bei ihm anklopft. Der Hilfesuchende sollte dann anklopfen mit dem Befehl in seiner Konsole:
Zunächst muss der Helfer dem Hilfesuchenden seine aktuelle IP mitteilen. Diese kann er z.B. unter wieistmeineip.de
ermitteln. Dort wird gegebenenfalls die IP des Routers angezeigt; dies ist dann die richtige. Dann folgenden Befehl eingeben:
x11vnc -connect 88.77.145.104
Die IP 88.77.145.104 ist nur eine Beispiel-IP und muss durch diejenige ersetzt werden, die der Helfer bei sich herausgefunden hat.
Nun sollte sich ein Fenster öffnen, auf dem der Helfer den Desktop des Hilfesuchenden sehen und steuern kann.
Wenn die erste Verbindung steht, ist es meist praktisch, dem Hilfesuchenden einen Starter auf den Desktop zu legen, der den Befehl im Terminal für ihn ausführt. Oftmals werden Befehle im Terminal seitens des Hilfesuchenden vergessen, mit Tippfehlern eingegeben oder es besteht eine Hemmschwelle in der Benutzung des Terminals. Außerdem ist dieser Weg am wenigsten störanfällig.
Es ist zu empfehlen, sich den Desktop etwas verkleinert darstellen zu lassen, da der Desktop des Hilfesuchenden meistens nicht ganz auf den Bildschirm des Helfers passt. Das kann zwar zu minimalen Verzerrungen in der Darstellung führen, ist beim Arbeiten jedoch meist praktischer. Dazu sollte der Hilfesuchende zum Anklopfen folgenden Befehl mit der zusätzlichen Option -scale X/Y eingeben:
x11vnc -connect name.dyndns.org -scale 9/10
beziehungsweise
x11vnc -connect 88.77.145.104 -scale 9/10
Dadurch wird der Bildschirm des Hilfesuchenden vor der Übertragung auf 9/10 verkleinert. Statt 9/10 kann man jeden anderen Wert eingeben, z.B. 2/3, wenn der Desktop auf 2/3 verkleinert dargestellt werden soll.
Die aufgebaute Verbindung hat meist nur eine sehr geringe Farbdarstellung, damit der VNC möglichst wenige Daten übermitteln muss. Dies macht Sinn, weil die Verbindung meistens relativ langsam ist.
Will man sich alle Farben beim Hilfesuchenden anzeigen lassen, muss man die Option -FullColor beim Helfenden setzen. Entsprechend Weg 2 & 3 sieht der Befehl dann so aus:
xvnc4viewer -FullColor -listen 5500
Nun wird der Bildschirmaufbau langsam, jedoch mit allen Farben erfolgen.
Noch mehr Optionen, Beispiele und Erklärungen findet man auf den manpages von x11vnc und xvnc4viewer.
Auch diese Methode verfolgt das Ziel, den Konfigurationsaufwand für den Hilfesuchenden so gering wie möglich zu halten. Deshalb baut der Hilfesuchende hier mit dem schon vorinstallierten SSH Client eine normale SSH-Verbindung zum Helfer auf. Durch diese wird dann eine umgekehrte VNC-Verbindung getunnelt. Folgende Schritte sind dabei bei Hilfesuchenden und Helfer vorzunehmen:
Sofern der Helfer hinter einem Router sitzt, ist dort eine Portweiterleitung für die SSH-Verbindung einzurichten. Läuft eine Firewall auf dem System des Helfers, so muss auch diese so konfiguriert werden, dass sie die SSH-Anfrage des Hilfesuchenden durchlässt.
Installation des SSH-Servers.
Installation des vncviewers:
xvnc4viewer
Anlegen eines Benutzers, mit dem sich der Hilfesuchende dann per SSH auf dem Rechner des Helfers anmelden kann.
Ermittlung der eigenen IP oder alternative Einrichtung von DynDNS.
Helfer: Start des SSH Server:
sudo /etc/init.d/ssh restart
Helfer: Start des VNC-Viewers im Listen-Modus:
vncviewer -listen
Hilfesuchender: Start der SSH-Verbindung mittels SSH-Client und Verbindung zum lauschenden VNC-Viewer:
ssh -f -L 5500:localhost:5500 hilflos@IP-des-Helfersystems sleep 10; x11vnc -connect_or_exit localhost:5500
Der letzte Befehl startet vom System des Hilfesuchenden eine SSH-Verbindung zum System des Helfers. Diese SSH-Verbindung läuft im Hintergrund (-f-Option). Durch diese hindurch verbindet sich der Hilfesuchende nun mit seinem VNC-Server auf den lauschenden VNC-Viewer des Helfers. Das elegante an dieser Lösung ist, dass mit dem schließen des VNC-Viewers auf der Helferseite sogleich der VNC-Server und die SSH-Verbindung auf Seiten des Hilfesuchenden sauber geschlossen werden.
Wenn der Hilfe-Suchende über das Internet von einem Helfer unterstützt werden soll, benötigt der Helfer (Client) Informationen über den Server (Hilfe-Suchende); diese muss ihm der Hilfe-Suchende mitteilen. Notwendig sind - sofern DynDNS nicht verwendet wird - IP-Adresse und Display-Nummer. Letztere kann von 0 abweichen, wenn auf dem Server-Rechner z. B. mehrere User angemeldet sind. Um es dem Hilfe-Suchenden möglichst einfach zu machen, kann für diesen (im Voraus) ein Starter im Menü oder Panel angelegt werden, der die Informationen ermittelt und ausgibt. Der Starter muss folgendes ausführbares Skript aufrufen:
1 2 3 4 5 6 | #!/bin/bash DISPLAY_NUMBER=`echo $DISPLAY | cut -c 2` IP_ADDRESS=`wget http://checkip.dyndns.com/ -O - 2>/dev/null | grep "Current IP Address" | cut -d ":" -f 2- | sed 's#</body></html>##g' | sed 's/ //'` zenity --info --text "IP-Adresse: $IP_ADDRESS\nDisplay-Nummer: $DISPLAY_NUMBER" --title "VNC-Info" |
Das Paket zenity muss dazu installiert sein.
Zur Behebung des Bugs 108928 muss in der Datei $HOME/.vnc/xstartup folgende Zeile hinzugefügt werden, zu beachten ist, dass der Eintrag auf jeden Fall vor /etc/X11/Xsession eingefügt wird:
export XKL_XMODMAP_DISABLE=1
Nach einem Neustart des VNC-Servers sollte das Tastaturproblem behoben sein.
Drag&Drop funktioniert in der in Ubuntu Lucid Lynx 10.04 verwendeten Programmversion nicht, siehe 587856 und diesen
Blogeintrag
. Als provisorische Lösung kann in einem Editor [4] mit Root-Rechten in der Datei /etc/apt/preferences.d/pinGnomeForRemoteAccess (erweitert durch libgtk2.0-dev) die Verwendung funktionsfähiger älterer Pakete erzwungen werden:
Package: libgtk2.0-0 Pin: version 2.20.0-0ubuntu4 Pin-Priority: 1001 Package: libgtk2.0-bin Pin: version 2.20.0-0ubuntu4 Pin-Priority: 1001 Package: libgtk2.0-dev Pin: version 2.20.0-0ubuntu4 Pin-Priority: 1001 Package: libgail18 Pin: version 2.20.0-0ubuntu4 Pin-Priority: 1001 Package: libgail-common Pin: version 2.20.0-0ubuntu4 Pin-Priority: 1001 Package: gtk2-engines-pixbuf Pin: version 2.20.0-0ubuntu4 Pin-Priority: 1001
Virtual Network Computing
- Entwicklerseite von VNC
VNC-Server Manualpage
- Beschreibung und Startbefehle für den VNC-Server
Virtual_Network_Computing - Wikipedia
TightVNC
- Open Source VNC-Server und -Viewer, Linux, Unix und Windows, Viewer auch für Java
UltraVNC
- noch ein Open Source VNC-Server und -Viewer für Windows, Java-Viewer mittels Browser
Lösung bei Problemen von Vino in Zusammenhang mit 3D-Effekten und bestimmten Treibern 
Das eigene PC-Helpdesk
- Blogeintrag 09/2009
Fernhilfe - X-Window-Desktop fernsteuern per Shell-Skript und VNC
- Heise Netze, 05/2008
Diese Revision wurde am 2. Februar 2012 um 12:05 Uhr
von aasche erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
Netzwerk, Server, Internet, Remotedesktop, Fernwartung
2004 – 2011 ubuntuusers.de • Einige Rechte vorbehalten