VNC
Installation
yum install tigervnc # Dies installiert den Client (Optional) yum install tigervnc-server # Dies installiert den Servertigervnc wird statt tightvnc verwendet
VNC automatisch starten
chkconfig vncserver on vi /etc/sysconfig/vncservers
VNCSERVERS="1:andre 2:root" VNCSERVERSARGS[1]="-geometry 1024×768" VNCSERVERSARGS[2]="-geometry 1024×768"
Diese Konfiguration startet automatisch eine VNC Session 1 (Port 5901) als Benutzer paul mit einer Auflösung von 1024×768
und eine Session 2 (Port 5902) als root mit einer geringeren Auflösung
Achtung
Eine automatisierte VNC-Session muss zuvor mindestens einmal vom User manuell gestartet worden sein um die zugehörie Datei xstartup und das Passwoer zu generieren.
Jetzt muss der Dienst VNC-Server beim Starten automatisch mit gestartet werden:
chkconfig vncserver on
Erster Start
Zuvor muss die lokale Firewall iptables deaktiviert oder angepasst werden:
/etc/init.d/iptables stop
deaktiviert die lokale Firewall komplett. Besser ist es nur die verwendeten Ports zu öffnen:
vim /etc/sysconfig/iptables
Unter der Sektion :OUTPUT ACCEPT [0:0] werden die Regeln zum Öffnen der Ports hinzu gefügt
# Open VNC for Paul -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5801 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6001 -j ACCEPT # Open VNC for root -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5802 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6002 -j ACCEPTNach dem Speichern mit „/etc/init.d/iptables restart“ die neuen Regeln aktivieren. Für weitere VNC-Sessions müssen die Entsprechenden Ports freigegeben werden.
als User paul
vncserver :1
Dies mit jedem in der Konfiguration eingetragenen User wiederholen
Konfiguration
Jeder User hat eine eigene vnc Konfigurationsdatei, die nicht geändert werden muss.
Als root:
vim /root/.vnc/xstartup
#!/bin/sh [ -r /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n export LANG export SYSFONT vncconfig -iconic & unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS OS=`uname -s` if [ $OS = 'Linux' ]; then case "$WINDOWMANAGER" in *gnome*) if [ -e /etc/SuSE-release ]; then PATH=$PATH:/opt/gnome/bin export PATH fi ;; esac fi if [ -x /etc/X11/xinit/xinitrc ]; then exec /etc/X11/xinit/xinitrc fi if [ -f /etc/X11/xinit/xinitrc ]; then exec sh /etc/X11/xinit/xinitrc fi [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & #twm &Diese Konfiguration startet unter tigervnc eine Gnome-Session. Sollte eine KDE- oder twm-Session gestartet werden, muss die letzte Zeile angepasst werden:
twm & # startet twm startkde & # startet KDE
Testen
Zuerst ein lokaler Test ov VNC und dessen Ports arbeiten:
netstat -tulpan | grep vnc
Das Ergebnis muss etwa so aussen:
tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 9150/Xvnc tcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN 9150/Xvnc tcp 0 0 :::6002 :::* LISTEN 9150/Xvnc
Jetzt kann ein beliebiger VNC-Client auf dem Client-PC installiert und gestartet werden. Mit einem TightVNC Client kann durch die Eingabe von:
192.168.4.94::5902
eine VNC-Verbindung hergestellt werden.
VNC-Umleitung (Tunnel)
Wer sich übers Netz auf einen Linuxrechner einloggt und Programme mit graphischer Benutzeroberfläche (etwa kprinter) benutzen will, braucht eine Bildschirmumleitung. Von einem Linuxrechner aus kann man einfach ssh -X benutzen, dann sollten grafische Programme sich normal starten lassen. Beim Einloggen von einem Windows-Rechner aus kann man sich so helfen:
VNC-Server starten
Auf dem Server startet man einen neuen X-Server mit
vncserver -query localhost
Dies liefert eine Meldung der Form
New 'X' desktop is host:1
oder ähnlich, wobei die „1“ die Nummer des X-Servers ist, sie kann sich ändern. Diese sollte man sich merken. Oft ist es sinnvoll, die Größe des umgeleiteten Bildschirms zu verkleinern indem man etwa verwendet
vncserver -query localhost -geometry 800x600
Beim ersten Aufruf von vncserver wird man nach einem Passwort gefragt. Dies braucht man später, um auf den Server zugreifen zu können. Es muss nicht das User-Passwort sein. Um das Passwort zu ändern, löscht man die Datei
~/.vnc/passwd
Dann muss man beim nächsten Start ein neues eingeben.
SSH-Tunnel aufbauen
Auf dem Windows-client startet man eine SSH-Verbindung zum Server mit PuTTY, also PuTTY starten, Host und Port 22 wählen. Zusätzlich müssen zwei ports getunnelt werden. Das geht so: Links im Menü „Connection/SSH/Tunnels“ wählen.
Source port: 5801 Destination: rechner.math.tu-clausthal.de:5801
eingeben und Add klicken, danach das gleiche mit 5901. Die letzte Ziffer muss der Nummer des X-Servers (siehe oben) entsprechen! „Open“ wählen und mit Kennung und Passwort einloggen. WWW-Browser starten und als URL
http://localhost:5801
verwenden (letzte Ziffer wieder anpassen). Es läuft eine Java-Anzeige der Bildschirmumleitung. Der Bildinhalt wird jeweils als JPEG übertragen, deswegen nicht besonders schnell. Innerhalb des Matheinstituts reicht das nach meiner Erfahrung für die meisten Programme, dauerhaft arbeiten will man damit aber wahrscheinlich nicht. Ansicht mit Viewer Es gibt spezielle vnc-viewer zum Anzeigen der Umleitung. Diese sollten schneller sein. Funktioniert bei mir bislang nicht, vermutlich kommen die nicht mit den SSH-Tunnels klar. Beenden
client: Browser/viewer beenden server: vncserver beenden mit vncserver -kill :1 client: SSH-Verbindung/PuTTY beenden.
Troubleshoot
Passwort zurück setzen
Dazu den vncserver stoppen und die Datei:
/home/*user*/.vnc/passwd
löschen. Beim Neustart der VNC-Session wird nach einem neuen Passwort gefragt.
Server startet nach Absturz nicht mehr
Das liegt meist daran, dass es die Lock-Dateien xxx:x.log xxx:x.pid im Ordner /home/user/.vnc/ noch gibt obwohl der Service nicht gestartet ist. Dies löst man so für Paul mit der Session 1:
su paul # falls man nicht schon der richtige User ist (hier: paul) vncserver -kill :1 # beende die VNC-Session 1, falls sie noch läuft rm /home/paul/.vnc/*1.log # löscht die LOG-Datei der Session 1 rm /home/paul/.vnc/*1.pid # löscht die PID-Datei der Session 1 vncserver :1 # startet die Session 1 neu