web-dev-qa-db-fra.com

VNC Server écoute uniquement les connexions de l'hôte local

J'ai installé TightVNCServer sur Raspbian (la version de septembre 2.017) pour mon Raspberry Pi 2 B +:

luis@Frambuesio:~$  vncserver -name Frambuesio -geometry 1280x1024 -depth 16

New 'Frambuesio' desktop at :1 on machine Frambuesio

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/luis/.vnc/Frambuesio:1.log

Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/luis/.vnc/passwd :1 to connect to the VNC server.

luis@Frambuesio:~$ netstat -ano | grep "5901"
tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 ::1:5901                :::*                    LISTEN      off (0.00/0/0)

Mais mon visualiseur VNC (de RealVNC sur une machine Windows distante) reçoit le message " Connexion refusée " lors de la tentative de connexion, et le port ne semble pas être à l'écoute:

luis@Hipatio:~$ Sudo nmap Frambuesio- -p 5900,5901,5902
[Sudo] password for luis:

Starting Nmap 7.01 ( https://nmap.org ) at 2017-10-18 16:58 CEST
Nmap scan report for Frambuesio- (192.168.11.142)
Host is up (0.00050s latency).
PORT     STATE  SERVICE
5900/tcp closed vnc
5901/tcp closed vnc-1
5902/tcp closed vnc-2
MAC Address: B8:27:EB:7D:7C:B0 (Raspberry Pi Foundation)

Nmap done: 1 IP address (1 Host up) scanned in 0.67 seconds

Si j'essaye depuis Ubuntu 16.04.3 sur un autre Raspberry Pi tout va bien (notez les différents résultats netstat):

luis@Zarzaparrillo:~$ vncserver -name Zarzaparrillo -geometry 1280x1024 -depth 16

New 'Zarzaparrillo' desktop is Zarzaparrillo:1

Starting applications specified in /home/luis/.vnc/xstartup
Log file is /home/luis/.vnc/Zarzaparrillo:1.log

luis@Zarzaparrillo:~$ netstat -ano | grep 5901
tcp6       0      0 :::5901                 :::*                    LISTEN      off (0.00/0/0)

Même résultat avec VNC4Server .

J'ai lu le papiers officiels Raspberry , consistant à installer le realvnc-vnc-server paquet. Mais le programme RealVNC installe une tonne de packages supplémentaires et n'est pas open source, même lorsqu'il est gratuit à des fins éducatives. Je préférerais certaines politiques plus ouvertes de GNU pour mon VNC, à condition qu'elles puissent être utilisées dans un environnement de production d'entreprise.

Ma solution de contournement consiste pour l'instant à utiliser X11vnc pour servir l'affichage sur un autre Port:

luis@Frambuesio:~$  vncserver -name Frambuesio -geometry 1280x1024 -depth 16

[... on another terminal: ]
luis@Frambuesio:~$ Sudo x11vnc -display :1 -passwd anypassword -auth guess -forever

... et maintenant le programme X11vnc rend l'affichage: 1 disponible. Notez que, tant que le port 5901 TCP est occupé, X11VNC utilise le 5900 TCP (aka :0 port):

The VNC desktop is:      Frambuesio:0
PORT=5900

Notez la sortie netstat, maintenant dans une condition fonctionnelle :

luis@Frambuesio:~$ netstat -ano | grep 5900
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 :::5900                 :::*                    LISTEN      off (0.00/0/0)
luis@Frambuesio:~$ netstat -ano | grep 5901
tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 ::1:5901                :::*                    LISTEN      off (0.00/0/0)

Pourquoi mes serveurs VNC échouent et comment pourrais-je résoudre ce problème?

9

Le problème semble être juste un argument par défaut sur VNCServer avec l'option incorrecte (pour votre cas).

A partir de l'aide de la ligne de commande vncserver:

[-localhost yes|no]    Only accept VNC connections from localhost

Cela devrait résoudre votre problème:

vncserver -localhost no

En interprétant le même dernier exemple dans la question d'origine, notez le 0.0.0.0:5900 signifiant "écoute des connexions de n'importe où à 5900 TCP":

luis@Frambuesio:~$ netstat -ano | grep 5900
tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 :::5900                 :::*                    LISTEN      off (0.00/0/0)

En attendant, notez le 127.0.0.1:5901 signifiant "écoute des connexions de localhost à 5901 TCP"

luis@Frambuesio:~$ netstat -ano | grep 5901
tcp        0      0 127.0.0.1:5901          0.0.0.0:*               LISTEN      off (0.00/0/0)
tcp6       0      0 ::1:5901                :::*                    LISTEN      off (0.00/0/0)
11

J'ai rencontré le même problème et je l'ai compris. Depuis la ligne de commande, exécutez:

tigervncserver -localhost no :1

Rendez-le permanent en ajoutant dans le fichier /etc/vnc.conf l'option:

$localhost = "no"

Même si le fichier indique que la valeur par défaut est localhost=no Ce n'est pas le cas.

4
Jose Sanchez