VNC automatisch starten

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
maetzi
Beiträge: 9
Registriert: 08.12.2004 09:14:40

VNC automatisch starten

Beitrag von maetzi » 08.12.2004 09:31:03

Hallo zusammen,
ich hab am Wochenende eine Prerelease von Debian Sarge installiert.
Um remote auf KDE zuzugreifen, hab ich VNC über den Paketmanager nachträglich installiert.
Den VNC-Server starte ich über folgenden Befehl:
vncserver -depth 16 -geometry 800x600

Das ist ja auch kein Problem, jedoch nach jedem Neustart muss ich über ssh den Server wieder neu starten.

Wie kann ich es machen, damit er automatisch VNC nach einem Neustart startet?

Danke, gruß Maetzi

Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Beitrag von eagle » 08.12.2004 10:14:30

Eine Variante währe ein entsprechenes Runlevel Skript im Verzeichnis /etc/init.d/ zu erzeugen. Ein Grundgerüst für ein Skript findes du in der Datei /etc/init.d/skeleton .

Wenn du allerdings als Benutzer beim Starten deiner KDE Session automatisch VNC aktiven willst, dann sollte ein kleines Start Skript im Verzeichnis ~/.kde/Autostart liegen.

eagle
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams

maetzi
Beiträge: 9
Registriert: 08.12.2004 09:14:40

Beitrag von maetzi » 08.12.2004 10:35:17

Hi Eagle,
danke für deine Antwort.
Reicht es aus, wenn das Skript folgendermassen aussieht und im Autostart-Verzeichnis von KDE liegt?

#!/bin/sh
vncserver -depth 16 -geometry 800x600


Gruß Maetzi

Benutzeravatar
eagle
Beiträge: 2282
Registriert: 05.11.2002 11:20:53
Wohnort: Berlin

Beitrag von eagle » 08.12.2004 10:39:54

Ja das sollte reichen, aber nicht vergessen die Ausführungrechte zu setzen :wink:.

eagle
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams

maetzi
Beiträge: 9
Registriert: 08.12.2004 09:14:40

Beitrag von maetzi » 09.12.2004 08:30:22

Hi,
ich hab im Netz ein init-Skript für den VNC-Server gefunden. Könnte bitte einmal jemand von euch sich das anschauen und mir sagen ob das funktionieren könnte. Okay, was noch fehlt sind dann die Verknüpfungen in den Runlevels. Muss eigentlich immer ein Start und Stop im Runlevel für ein Prozess enthalten sein?

Danke, gruß Maetzi

Code: Alles auswählen

#! bin/bash 

case "$1" in 
start) 
vncserver :1 -depth 16 -geometry 800x600
echo "vnc gestartet" 
;; 
case "$1" in 
stop) 
vncserver -kill :1
echo "vnc gestoppt" 
;; 
*) 
echo "nur start oder stop bitte" 
;; 
esac 
exit 0 


gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 09.12.2004 10:45:38

ich würde den vncserver nicht unter root laufen lassen.

D.h.:

Code: Alles auswählen

#! bin/bash 
USER=myname
DISPLAY=:1

case "$1" in 
start) 
echo "starte vncserver" 
su - "$USER" -c  "vncserver$DISPLAY -depth 16 -geometry 800x600"
;; 
case "$1" in 
stop) 
echo "stoppe vncserver" 
su - "$USER" -c "vncserver -kill $DISPLAY"
;; 
*) 
echo "nur start oder stop bitte" >&2
exit 1
;; 
esac 
exit 0 

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 09.12.2004 11:22:03

eagle hat geschrieben:Wenn du allerdings als Benutzer beim Starten deiner KDE Session automatisch VNC aktiven willst, dann sollte ein kleines Start Skript im Verzeichnis ~/.kde/Autostart liegen.
Das wuerde aber bedeuten, dass der VNC Server nur gestartet wird, wenn KDE vorher gestartet wird. Dem OP war es aber bereits zu viel, sich per SSH einzuloggen, ich denke, dann will er noch weniger vorher das KDE starten, um danach per VNC connecten zu koennen :roll:

Ich starte den VNC Server bei mir ueber den inetd und das funktioniert super. Hab 2 Instanzen davon konfiguriert (mit unterschiedlicher Geometrie) und kann mich entweder auf Port 5900 (800x600) oder 5901 (950x700) verbinden, um einen der beiden Server bei Bedarf zu starten.

Durch Nutzung der "-once" Option des VNC Servers kann man auch sicherstellen, dass niemand eine VNC Sitzung startet, diese vergisst und nicht beendet, so dass sie evtl. durch andere uebernommen werden kann. Der VNC Server ist so konfiguriert, dass er sich mit dem lokal laufenden Display-Manager (wdm) verbindet. Dadurch ist sichergestellt, dass jeder VNC Nutzer sich mit Username und Passwort identifizieren muss.

Als Kroenung des Ganzen tunnel ich den VNC Traffic durch einen SSH Tunnel 8)

maetzi
Beiträge: 9
Registriert: 08.12.2004 09:14:40

Beitrag von maetzi » 09.12.2004 11:57:14

Hi QT,

kannst du mir bitte dein Eintrag in die inetd-Datei posten. Hast schon recht. Ich will mich nicht erst an KDE anmelden. Deine Lösung finde ich viel besser. Bei mir läuft als Displaymanager der von Gnome (gdm).

Ich es auch möglich, dass du die Config von VNC anhängst.

Wäre echt cool.

Danke, gruß Maetzi

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 09.12.2004 12:14:18

Leider kann ich meinen eigenen Artikel zu dem Thema hier im Forum nicht mehr finden. Die "eigene Beitraege" Funktion ist leider deaktiviert bzw. es erscheint nur 1 Seite der eigenen Beitraege und daher kann ich ihn derzeit nicht finden.

Egal, die Grundlage fuer meine Vorgehensweise bildete ein Artikel des LinuxMAG [1] und ich habe das nur etwas abgeaendert und angepasst und dazu noch die Sache mit einem SSH Tunnel eingerichtet, um die VNC Server vor unbefugter Nutzung zu schuetzen. Den VNC Server kann man derzeit nur via SSH bei mir starten, das erhoeht die Sicherheit sehr, denn erstens kommen nur Leute ran, die einen lokalen Account haben und zweitens werden die Anmeldedaten beim Anmelden zum Display-Manager verschluesselt uebertragen.

Schau Dir einfach mal den Artikel an und bei Fragen melde Dich wieder.

Gruesse.

[1] http://www.linux-mag.com/content/view/1298/2205/

EDIT: Link aktualisiert.
Zuletzt geändert von QT am 22.07.2005 20:21:41, insgesamt 1-mal geändert.

maetzi
Beiträge: 9
Registriert: 08.12.2004 09:14:40

Beitrag von maetzi » 10.12.2004 08:24:02

Hi QT,
ich hab gestern versucht den unter deinem Link erklärten VNC-Server zu konfigurieren. Nun leider hat es nicht ganz funktioniert.
Anbei eine kurze Erläuterung was ich alles gemacht hab. Vielleicht hab ich ja etwas vergessen:

Schritt 1:
In der Datei /etc/X11/gdm.conf im Bereich xdmcp auf enable=true gesetzt

Schritt 2:
In der Datei /etc/services folgenden Eintrag hinzugefügt: vnc-800x600 5900/tcp

Schritt 3:
In der Datei /etc/inetd.conf folgendes eingetragen:
vnc-800x600 stream tcp nowait nobody /usr/sbin/tcpd /usr/X11R6/bin/Xvnc :1 -inetd
-query localhost -geometry 800x600 -depth 24 -once -fp unix/:7100

Dabei hat ich die in der Doku angegebenen ganz rechten Back-Slashes nicht mit eingetragen (ich glaub die sollen nur ein Zeilenumburch symbolisieren).

Nach einem Neustart des Rechners war keine Fehlermeldung von VNC beim Booten zu erkennen.

Wenn ich mich jetzt mit einem VNC-Viewer von Windows aus, auf den Rechner verbinde, erhalte ich folgende Fehlermeldung:
"Connection failed - Error reading Protocol Version ..."

Versuch ich es mit localhost von Linux entsteht folgende Meldung:
"ReadFromRFBServer:rdr::EndofStream"

Leider find auch mit "ps ax" kein Prozess der von VNC sein könnte. Er müsste jedoch laufen, dass sagt er mir zumindestens wenn ich versuche auf der Arbeitsfläche 1 ein neuen VNC-Server zu starten.

Was hab ich denn falsch gemacht?

Danke, gruß Maetzi.

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 10.12.2004 21:15:18

maetzi hat geschrieben:Schritt 3:
In der Datei /etc/inetd.conf folgendes eingetragen:
vnc-800x600 stream tcp nowait nobody /usr/sbin/tcpd /usr/X11R6/bin/Xvnc :1 -inetd
-query localhost -geometry 800x600 -depth 24 -once -fp unix/:7100
Ich vermute mal, es liegt an der fp Option. Nimm die mal raus und versuch es dann nochmal. Bei mir sieht es eigentlich ähnlich aus wie bei Dir.

Code: Alles auswählen

$ grep Port /etc/X11/wdm/wdm-config
DisplayManager.requestPort:     177

$ grep vnc /etc/services
vnc-800x600     5900/tcp
vnc-950x700     5901/tcp

$ grep vnc /etc/inetd.conf
vnc-800x600 stream tcp nowait nobody /usr/sbin/tcpd /usr/X11R6/bin/Xvnc :1 -inetd -query localhost -geometry 800x600 -depth 24 -once
vnc-950x700 stream tcp nowait nobody /usr/sbin/tcpd /usr/X11R6/bin/Xvnc :1 -inetd -query localhost -geometry 950x700 -depth 24 -once
Das ganze ist natürlich über die /etc/hosts.allow und /etc/hosts.deny bzw. eine Firewall abzusichern. Deswegen lasse ich gar kein VNC traffic von aussen zu, sondern ausschliesslich per SSH tunnel 8)

Achja, der EIntrag in der inetd.conf muss natürlich aus nur 1 Zeile bestehen!

maetzi
Beiträge: 9
Registriert: 08.12.2004 09:14:40

Beitrag von maetzi » 12.12.2004 18:13:56

Hi QT,
danke für deine Antwort. Der VNC-Dienst läuft jetzt soweit. Wenn ich mich jedoch mit dem VNC-Viewer verbinde, bekomm ich nur den Bildschirm vom X-Server (grauer Bildschirm mit X-Cursor) angezeigt und nicht den gdm Anmeldebildschirm.

Ich hoffe es kann mir jemand bei diesem Problem helfen.

Danke, gruß Maetzi

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 12.12.2004 21:03:18

Das klingt danach, als hätte der VNC Probleme, sich mit dem GDM zu verbinden. Steht denn etwas in /var/log/gdm? Alternativ mal "ls -ltr /var/log/" machen und dann in die aktuellen Dateien mal reinschauen. Ich hatte eben, als ich meinen VNC Link von remote über meine DSL Strecke nutzen wollte, ein ähnliches Problem. Grund bei mir war, dass der wdm nicht lief. Lies sich dann schnell beheben :-)

Ansonsten hab ich da nun auch keine bessere Idee. Such mal in Deinen Logs, ob sich da ein Hinweis finden lässt.....

maetzi
Beiträge: 9
Registriert: 08.12.2004 09:14:40

Beitrag von maetzi » 13.12.2004 08:16:34

Sorry, geht jetzt.
Hab ausversehen in der Datei /etc/inetd.conf die Option "-query localhost" vergessen.
Ich hab jetzt nur noch ein Problem mit dem SSH-Tunnel.
In den meisten Dokumentation steht, dass ich den Befehl "ssh -L 5903:localhost:5901 benutzer@IP" eingeben soll. Windows hat aber jedoch standardmäßig kein mitgelieferten SSH-Client.
Geht das überhaupt, dass ich eine SSH-Verschlüsselte Remote-Verbindung von Windows aus aufbauen kann?

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 13.12.2004 12:32:40

Prima, dass es nun geht!

Ja, das mit dem Portforwarden geht wunderbar mit PuTTY. Ich forwarde aber nicht port 5903 auf remote 5901 sondern auch lokal 5901 auf remote 5901. In PuTTY kann man das unter den SSH Optionen einstellen. Sobald das Portforwarding eingerichtet ist und Du mit PuTTY eingeloggt bist, kannst Du dann eine VNC Verbindung auf host localhost:1 starten. Versuche das mal......

maetzi
Beiträge: 9
Registriert: 08.12.2004 09:14:40

Beitrag von maetzi » 14.12.2004 09:05:57

Hi QT,
super es funktioniert jetzt auch mit SSH.

Nochmals vielen DANK für deine spitzen Unterstützung.

Es ist wirklich spitze, dass es noch Leute gibt die anderen helfen.

Danke, gruß Maetzi

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 14.12.2004 09:42:20

Prima, dass nun alles klappt und auch dass Du scheinbar rundum zufrieden bist mit der vorgschlagenen Methode! Ich finde diese Art und Weise den VNC zu betreiben einfach genial. Er laeuft nur bei Bedarf (via inetd), man kann verschiedene Aufloesungen hinterlegen, man MUSS sich am DM anmelden mit User und Passwort, durch die once Option kann es nicht mehr passieren, dass man VNC Sitzungen vergisst und diese weiterlaufen und zu guter letzt kann man es so einrichten, dass der komplette VNC Traffic durch den SSH Tunnel geht. IMO genial! 8)

Jedenfalls 1000mal besser als irgendein Init-Script oder so....

Benutzeravatar
d4rkm3n
Beiträge: 159
Registriert: 07.05.2005 14:36:43

Beitrag von d4rkm3n » 22.07.2005 15:12:59

QT hat geschrieben:Leider kann ich meinen eigenen Artikel zu dem Thema hier im Forum nicht mehr finden. Die "eigene Beitraege" Funktion ist leider deaktiviert bzw. es erscheint nur 1 Seite der eigenen Beitraege und daher kann ich ihn derzeit nicht finden.

Egal, die Grundlage fuer meine Vorgehensweise bildete ein Artikel des LinuxMAG [1] und ich habe das nur etwas abgeaendert und angepasst und dazu noch die Sache mit einem SSH Tunnel eingerichtet, um die VNC Server vor unbefugter Nutzung zu schuetzen. Den VNC Server kann man derzeit nur via SSH bei mir starten, das erhoeht die Sicherheit sehr, denn erstens kommen nur Leute ran, die einen lokalen Account haben und zweitens werden die Anmeldedaten beim Anmelden zum Display-Manager verschluesselt uebertragen.

Schau Dir einfach mal den Artikel an und bei Fragen melde Dich wieder.

Gruesse.

[1] http://www.linux-mag.com/cgi-bin/printe ... ticle=guru
ich würde auch gerne diesen artikel lesen und nach machen! :)

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 22.07.2005 20:20:41

d4rkm3n hat geschrieben:ich würde auch gerne diesen artikel lesen und nach machen! :)
http://www.linux-mag.com/content/view/1298/2205/

Beim linux-mag.com scheint eine Reorganisation stattgefunden zu haben und daher funktionierte der alte Link nicht mehr. Aber auf die Hauptseite gehen und dort in die Suchmaske 'VNC' einzutippen, hat sofort den neuen Ort zum Vorschein gebracht ;-)

Benutzeravatar
d4rkm3n
Beiträge: 159
Registriert: 07.05.2005 14:36:43

Beitrag von d4rkm3n » 23.07.2005 02:43:27

danke! kannst du mir auch erklären wie das mit den shh-tunnel geht? das wäre sehr interessant für mich,da ich sehr viel mit ssh arbeite(n werde). :roll:

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 23.07.2005 08:54:20

d4rkm3n hat geschrieben:danke! kannst du mir auch erklären wie das mit den shh-tunnel geht? das wäre sehr interessant für mich,da ich sehr viel mit ssh arbeite(n werde). :roll:
Moin!

Das ist doch in diesem Thread hier erklärt worden. Am besten, Du fängst einfach mal damit an, das zu versuchen und wenn es Probleme gibt, meldest Du Dich wieder :wink:

Bring erstmal das mit dem VNC zum Laufen und dann ist die SSH Geschichte wirklich nicht sonderlich schwer. Du musst einfach nur die passenden Ports tunneln und an Deinem VNC viewer statt den remote Hostnamen halt localhost verwenden.

HTH.

Benutzeravatar
d4rkm3n
Beiträge: 159
Registriert: 07.05.2005 14:36:43

Beitrag von d4rkm3n » 24.07.2005 05:28:25

ok ok ich habe vnc jetzt am laufen (einwandfrei), aber wie kann ich jetzt von windows aus druch den ssh tunnel auf vnc zurgreifen?

Benutzeravatar
QT
Beiträge: 1322
Registriert: 22.07.2004 21:08:02
Wohnort: localhost

Beitrag von QT » 24.07.2005 09:59:14

d4rkm3n hat geschrieben:ok ok ich habe vnc jetzt am laufen (einwandfrei), aber wie kann ich jetzt von windows aus druch den ssh tunnel auf vnc zurgreifen?
Das geht so, wie ich es hier im Thread erklärt hatte. Du musst die passenden Ports forwarden und dann am VNC Viewer in Windows als Host den 'localhost' eintragen.

http://www.debianforum.de/forum/viewtop ... 725#216725

Antworten