Dieser Beitrag ist schon sehr alt, und die Infos hier sind sicherlich hoffnungslos veraltet…
Per VNC auf UBUNTU zugreifen
Wie schon erwähnt habe ich UBUNTU 8.10 auf meinem alten Video-PC installiert. Da die Kiste im Dachgeschoss steht, würde ich sie gerne per VNC steuern. UBUNTU bringt von Hause aus einen VNC-Server mit, der per “System => Einstellungen => Entfernter Desktop” scharfgeschaltet werden kann. Der Server, der hier von UBUNTU genutzt wird, heisst vino
und bringt einige Nachteile mit sich:
die Einstellungsmöglichkeiten sind vergleichsweise dürftig
Er läuft selbst im LAN sehr träge!
* Wenn ich mich mit OSX per [Chicken of the VNC](http://sourceforge.net/projects/cotvnc/) zu UBUNTU verbinde, kann es bis zu 30 Sekunden dauern, bis meine Mausbewegungen und Befehle übertragen sind bzw. das Bild aufgebaut ist.
* Unter Leopard läuft das ein wenig (wirklich nur ein wenig) besser, wenn ich nicht per Chicken zugreife, sondern mit dem Apple-eigenen VNS-Viewer (im Finder unter der Leiste "Freigabe" beim UBUNTU-Rechner auf "Bildschirm steuern" klicken).
* Es kann ein wenig helfen, wenn man bei UBUNTU die Desktop-Effekte abschaltet (System => Einstellungen => Erscheinungsbild => Reiter "Visuelle Effkte") und das Hintergrundbild nicht mitüberträgt
- die Zwischenablage wird nicht zwischen den Rechnern synchronisiert
Das ist sehr ärgerlich, denn die OSX-Bildschirmsteuerung (von OSX zu OSX) ist selbst dann super schnell, wenn das Bild von 2 angeschlossenen Monitoren übertragen wird.
[Wenn man nun ganz auf VNC verzichten möchte, kann man es mit der Alternative “FreeNX” versuchen, welche viel schnellere Übertragungen bietet und recht einfach installiert werden kann.]
Nunja, ich wollte zunächst jedoch bei VNC bleiben und habe daher einen alternativen VNC-Server auf dem UBUNTU-Rechner installiert: x11vnc
in Kombination mit autocutsel
. Letzteres synchronisiert die Zwischenablage und funktioniert evtl. auch bei vino
.) Und das geht so:
Setze dich an den UBUNTU-PC und öffne ein Terminalfenster
Installiere (falls noch nicht vorhanden)
openssh-server
per Terminaleingabe:
sudo apt-get install openssh-server
SSH ermöglicht es dir, per Terminal von OSX aus auf die Kommandozeile von UBUNTU zuzugreifen. Somit kann man den Rechner auch dann steuern, wenn VNC mal “streikt”. Ist auf jeden Fall gut, wenn man sich SSH einrichtet
- Entferne
vino
vom System per
sudo apt-get remove vino
- Installiere
x11vnc
undautocutsel
per
sudo apt-get install x11vnc autocutsel
- Gehe an deinen OSX-Rechner und öffne ein Terminal-Fenster. Per SSH kann man sich nun bei dem UBUNTU-Rechner anmelden:
ssh UBUNTU
wobei UBUNTU
durch die lokale IP-Adresse des UBUNTU-PCs ersetzt werden muss. Voraussetzung hierbei ist, dass du einen Benutzeraccount am UBUNTU-Rechner hast. Sollte der Username von deinem OSX-Kurznamen abweichen, musst du folgendes eintippen:
ssh USER@UBUNTU
wobei USER
durch deinen UBUNTU-Usernamen ersetzen musst. Du wirst nun aufgefordert, das Passwort des Ubuntu-Users einzutippen. Tue dies und wundere dich nicht, dass keine Symbole (z.B. ****) erscheinen. Tippe dein Passwort ein und drücke die RETURN-Taste. Voila, du bist nun mit dem UBUNTU-PC verbunden.
- Versuche nun x11vnc zu starten. Hierfür tippst du folgendes ein:
x11vnc -display :0
Hierdurch wird x11vnc gestartet, und der Bildschirm 0 (Standard-Monitor) wird versendet (wenn z.B. zwei Monitore angeschlossen sind, wäre Display 1 die Nummer des zweiten Monitors). Auf der Konsole werden nun einige Logdaten ausgegeben. Am Ende sollte etwas in dieser Art stehen:
screen setup finished. PORT=5901
Der letzte Eintrag ist der wichtige: Der Bildschirminhalt wird über Port 5901 übertragen (der Standardport wäre eigentlich 5900, aber anscheined hat vino (bei mir zumindest) diesen Port für sich reserviert. Nuja, egal).
Öffne nun Chicken of the VNC und verbinde dich zum UBUNTU-Pc, wobei du bei
Host
die lokale IP-Adresse von UBUNTU, und beiDisplay
die1
einträgst (der Anfang der Portnummer, also 590, wird vom Chicken automatisch hinzugefügt. Da unser UBUNTU auf Port 5901 sendet, muss nur die1
eingetragen werden. Bei Port 5900 müsstest du die0
eintragen).Funktioniert? Ja, super!
Du kannst die Freigabe des Bildschirms noch durch ein Passwort absichern. Hierzu musst du am UBUNTU-PC folgendes eintippen:
x11vnc -storepasswd
Das Passwort musst du 2mal eingeben. Anschließend wird es (automatisch) in ~/.vnc/passwd
gespeichert. Um das Passwort wirklich abzufragen, muss x11vnc künftig wie folgt gestartet werden:
x11vnc -avahi -usepw -display :0
Der Zusatz -avahi
erlaubt es, unseren Rechner in den Übersichten der VNC-Clienten als “potentiell verfügbar” anzuzeigen.
- Jetzt muss
autocutsel
gestartet werden, damit die Zwischenablage der beiden Bildschirme synchronisiert werden. Dies geschieht mit einem neuen Terminal auf UBUNTU in welchen man eingibt:
autocutsel
- Fertig!
Per SSH-Tunnel Bei mir ist x11vnc sogar schnell genug, um den Bildschirm über das Internet zu übertragen. So kann ich von der Uni aus meinen UBUNTU-PC zu hause steuern. Hierfür nutze ich einen so genannten SSH-Tunnel.
Du benötigst einen so genannten dynDNS-Eintrag (kostenlosen) für deine Internetverbindung. Die meisten Router verstehen sich gut mit dynDNS.org. Durch so einen Eintrag wird eine von dir gewählte Adresse (z.B. MeinNickname.dyndns.org) automatisch mit deiner derzeitigen Internet-IP-Adresse synchronisiert. Das heisst: dein lokales Netzwerk zu hause ist immer über diese Adresse im Internet erreichbar!
Stelle deinen Router so ein, dass
Port 22
an die lokale IP des UBUNTU-PC weitergereicht wird.Bevor du zur Uni gehst, schalte den UBUNTU-PC ein :-)
An der Uni öffnest du ein Terminal und tippst dort ein:
ssh -t -L 5901:localhost:5901 USER@MeinNickname.dyndns.org 'x11vnc -usepw -display :0'
Natürlich musst du USER
und MeinNickname
durch deine Daten ersetzen. Dieser Befehl bewirkt folgendes:
* du stellst eine SSH-Verbindung zum UBUNTU-PC her
* durch die Option `-L` wird an deinen Port 5901 der UBUNTU-Port 5901 gebunden. Dies geschieht durch den Eintrag "`localhost`". Der UBUNTU-PC denkt, mit `localhost` sei er gemeint. Dein Fernsteuer-PC denkt das aber auch von sich...
* im zweiten Teil wird dann der Befehl zum Start von `x11vnc` gesetzt.
- Jetzt brauchst du noch ein Terminalfenster um
autocutsel
zu starten.
autocutsel
- Öffne jetzt Chicken of the VNC und verbinde dich wie folgt:
Host:localhost
Display:1
Password: (dein generiertes VNC-Passwort)
- Et Voila, du bist über das Internet mit einem relativ gut verschlüsselten SSH-Tunnel per VNC zu deinem UBUNTU-PC verbunden
automatisch starten Natürlich können x11vnc
und autocutsel
automatisch gestartet werden, sobald ein User sich am Desktop anmeldet. Ein schönes Script stellt Intangible zur Verfügung:
Vorraussetzung ist, dass
x11vnc
bereits installiert ist, und dass perx11vnc -storepasswd
ein Passwort in~/.vnc/passwd
hinterlegt wurdedas Script startet x11vnc, sobald sich ein User eingeloggt hat, zeigt den verwendeten Port an und speichert ihn in
~/.vnc/port.txt
ab.setze dich an deinen UBUNTU-PC, öffne ein Terminalfenster und gebe dort ein:
sudo gedit /usr/local/bin/sharex11vnc
Es öffnet sich der graphische Editor gedit. Hier hinterlegen wir folgenden Code und speichern dann ab:
`#!/bin/sh x11vnc -nap -bg -many -rfbauth ~/.vnc/passwd -desktop “VNC \({USER}@\){HOSTNAME}”|grep -Eo “[0-9]{4}”>~/.vnc/port.txt
Wenn du nicht möchtest, dass der VNC-Port beim Login ausgegeben wird, dann setze eine #
vor das zenity
in der letzte Zeile
- nach dem Speichern kannst du den Editor schließen. Gib nun im Terminal folgendes ein:
sudo chmod 755 /usr/local/bin/sharex11vnc
Hierdurch wird das Script ausführbar.
Damit das Script bei jedem Login gestartet wird, klicke in UBUNTU auf “System => Einstellungen => Sitzungen”, wähle dort den Reiter “Startprogramme” aus und klicke auf “Hinzufügen”. Jetzt kannst du bei “Befehl” auf “Durchsuchen” klicken und das Script in
/usr/local/bin/sharex11vnc
auswählen. Als “Name” kannst du z.B. “x11vnc Start” verwenden.Anschließend klickst du nochmals auf “Hinzufügen” und schreibst in die Felder “Name” und “Befehl” je “
autocutsel
” (ohne die ““)Fertig! Beachte aber: bei mir ist bei dieser Variante die Portnummer wieder auf den Standard (5900) gesetzt worden. Folglich musst du beim Chicken
Display 0
wählen! Ähnlich anders muss auch der SSH-Tunnel aufgebaut werden, falls du über das Internet zugreifen möchtest:
ssh -t -L 5900:localhost:5900 USER@MeinNickname.dyndns.org
Auch wird der Befehl zum Starten von x11vnc
nicht mehr angegeben, da x11vnc
ja jetzt immer automatisch gestartet wird.
Links
comment out the following if you don’t want a popup telling you which port you’re using.
zenity –info –text=“Your VNC port iscat ~/.vnc/port.txt
”`