VNC

Aug. 7, 2011·
Julio Batista Silva
Julio Batista Silva
· 2 Min Lesezeit

Virtual Network Computing (VNC) ist ein System, mit dem man einen entfernten Rechner grafisch über das RFB‑Protokoll steuern kann.

TightVNC, Vino und X11vnc sind einige der VNC‑Programme unter Linux. In diesem Beitrag geht es um TightVNC.

  1. TightVNC installieren:

    julio@julio-acer ~ $ sudo pacman -S tightvnc
    
  2. Startdateien erzeugen und ein Passwort setzen

    julio@julio-acer ~ $ vncserver :1
    You will require a password to access your desktops.
    
    Password:
    Verify:
    Would you like to enter a view-only password (y/n)? n
    
    New 'X' desktop is julio-acer:1
    
    Creating default startup script /home/julio/.vnc/xstartup
    Starting applications specified in /home/julio/.vnc/xstartup
    Log file is /home/julio/.vnc/julio-acer:1.log
    

    Standardmäßig läuft der Server auf TCP‑Port 5900+n, wobei n die Display‑Nummer ist.

  3. Für die Konfiguration den laufenden Server beenden

    julio@julio-acer ~ $ vncserver -kill :1
    
  4. Konfigurationsdatei bearbeiten (ähnlich .xinitrc)

    julio@julio-acer ~ $ vim ~/.vnc/xstartup
    #!/bin/sh
    export XKL_XMODMAP_DISABLE=1 #Evita erro ao mapear o teclado
    exec startxfce4
    #exec awesome
    
  5. Aus Sicherheitsgründen nur lokale Verbindungen erlauben – entfernte Zugriffe dann per SSH‑Tunnel authentifizieren.

    Dazu vncserver mit -localhost starten: vncserver -localhost :1.

  6. VNC‑Server automatisch starten/stoppen

    1. Beim Booten starten:

      julio@julio-acer ~ $ sudo vim /etc/rc.local
      su julio -c "vncserver -localhost :1"
      
    2. Beim Herunterfahren stoppen:

      julio@julio-acer ~ $ sudo vim /etc/rc.local.shutdown
      su julio -c "/usr/bin/vncserver -kill :1"
      

Verbindung von einem anderen Rechner

$ ssh -p 22 julio@casa.juliobs.com -L 8900/localhost/5901

Die Option -L richtet das SSH‑Tunneling ein. Anschließend vncviewer localhost:8900 starten. Port bei Bedarf anpassen.

Verbindung per iPhone

Die App iSSH kann direkt per VNC (RAW) verbinden; sicherer ist aber der SSH‑Tunnel.

  1. iSSH öffnen

  2. Add Configuration… und ähnlich wie im Beispiel konfigurieren

    (image not available)
    
  3. Zur Hauptansicht zurück und die eben erstellte Konfiguration wählen.

    (image not available)
    

    Auf einem iPhone 3G (480×320; iPhone 4: 960×640) ist -geometry praktisch, um die Darstellung an den Bildschirm anzupassen.

    Querformat:

    vncserver -localhost -geometry 480x268 :1
    

    Hochformat:

    vncserver -localhost -geometry 320x416 :1
    

Manchmal möchte ich den tatsächlich sichtbaren Desktop fernsteuern oder beobachten. Mit TightVNC geht das nicht, mit X11vnc schon.

  1. X11vnc installieren

    sudo pacman -S x11vnc
    
  2. Optional .Xauthority setzen

    x11vnc -display :0 -auth ~/.Xauthority
    
  3. Passwort einrichten

    mkdir ~/.x11vnc
    x11vnc -storepasswd your_password_here ~/.x11vnc/passwd
    
  4. Wie bei TightVNC -localhost nutzen. Beispiel‑Skript (z. B. in .xinitrc):

    x11vnc -localhost -many -display :0 -auth ~/.Xauthority &>/dev/null &
    

    -many verhindert das Beenden des Servers beim Sitzungsende.

  5. Zugriff per SSH‑Tunnel

    ssh -p 22xx -t -L 5900:localhost:5900 casa.juliobs.com 'sudo x11vnc -display :0 -auth /home/julio/.Xauthority'
    
  6. Zugriff vom iPhone wie bei TightVNC, hier Port 5900.


Hinweise/Probleme:

Offenbar unterstützt TightVNC kein RandR, das u. a. für Auflösungswechsel und Programme wie Chromium/Firefox nötig ist. Es gibt Patches im Netz; RealVNC scheint RandR zu unterstützen.


Julio Batista Silva
Autoren
Senior Cloud-Entwickler
comments powered by Disqus