web-dev-qa-db-fra.com

Comment démarrer le serveur vnc à la demande (pas au démarrage)

J'ai un vps qui a l'environnement xfce de base et tightvncserver installé.

J'aimerais que tightvncserver démarre automatiquement chaque fois que je lance une connexion au port sur lequel il est exécuté (dans mon cas, 5901).

J'ai vu des billets sur l'utilisation de inetd ou xinetd pour le faire, mais j'ai aussi vu beaucoup de messages disant que (x) inetd n'est pas inclus dans Ubuntu pour une raison, et qu'il s'agit d'un mauvaise idée de l'utiliser.

Quoi qu'il en soit, je cherche un moyen de le démarrage automatique de tightvncserver chaque fois qu'il existe une connexion entrante vers le port 5901, de préférence avec le moins de dépendances possible

3
QRohlf

Je ne sais pas pourquoi est "une mauvaise idée d'utiliser xinetd ou inetd" . J'ai vérifié les deux traqueurs de bogues et je n'ai vu aucun problème de sécurité.

Cela dit, je vais essayer de répéter ce que vous avez déjà trouvé sur la configuration de 'xinetd':

xinetd est assez simple à configurer. Il utilise le répertoire /etc/xinetd.d/ pour stocker toute la configuration par service. Il vous suffit donc de créer la configuration pour démarrer tightvncserver, un Sudo vim /etc/xinetd.d/tightvncserver pour créer un fichier, puis insérez votre configuration ( cela peut être modifié selon vos besoins):

service tightvncserver
{
        socket_type     =  stream
        protocol        =  tcp
        wait            =  no
        ## I don't run a vnc server myself, but you should change this for the user your VNC service uses.
        user            =  root
        port            =  5901
        server          =  /usr/sbin/tightvncserver
        ## This allows access from anyone in the 192.168 subnet, if you want anyone, just do not add this line.
        only_from       =  192.168.0.0
        log_on_failure  += USERID
        disable         =  no
}

C'est tout. Vous devez maintenant désactiver le démarrage de tightvncserver dans les répertoires rc-d.

Il y a plus d'options que vous pouvez ajouter à cela, mais je vais laisser cela au manuel .

1
Braiam

Plutôt que d'essayer d'utiliser tightvncserver, je tenterais la même chose que celle suggérée par @ Braiam, mais avec Xvnc.

service Xvnc
{
        disable = no
        type = UNLISTED
        socket_type = stream
        protocol = tcp
        user = nobody
        wait = yes
        server = /usr/bin/Xvnc
        server_args = -inetd :1 -query localhost -geometry 1024x768 -depth 16 -NeverShared -once -rfbauth /root/.vncpasswd
        port = 5901
}

Vous pouvez ajuster l'emplacement du fichier de mots de passe en modifiant le bit ci-dessus: /root/.vncpasswd. Les autorisations sur ce fichier peuvent être compliquées, vous devrez peut-être les attribuer à chmod 600 .vncpasswd.

Si vous souhaitez plus de détails, jetez un coup d’œil au tutoriel, 2. Lancement du serveur VNC avec xinetd qui montre de nombreuses façons différentes d’exécuter VNC en tant que service xinetd.

Utiliser xinetd

L'ensemble du commentaire sur la non utilisation de xinetd est superposé. C'est un service parfait à utiliser et, comme pour tout le reste, vous devez comprendre les implications de l'utilisation de la technologie X, rien de plus.

0
slm