VNC 服务器仅侦听来自本地主机的连接

VNC 服务器仅侦听来自本地主机的连接

我已经安装了TightVNC服务器在我的 Raspberry Pi 2 B+ 上的 Raspbian(2017 年 9 月版本)上:

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)

但我的 VNC 查看器(来自远程 Windows 计算机上的 RealVNC)收到消息“连接被拒绝" 尝试连接时,端口似乎没有在监听:

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

如果我尝试从乌班图16.04.3 在另一个 Raspberry Pi 上一切正常(注意不同的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)

结果与VNC4服务器

我已阅读树莓派官方论文,包括安装realvnc-vnc-server软件包。但是 RealVNC 程序安装了大量的额外套餐并且是不开源,即使它是免费用于教育目的。我更愿意为我的VNC提供一些GNU更开放的政策,只要它可以在企业生产环境中使用。

我的解决方法现在包括使用X11vnc在另一个端口上为显示器提供服务:

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

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

...现在 X11vnc 程序使显示:1 可用。请注意,只要 TCP 5901 端口被占用,X11VNC 就会使用 5900 TCP(又名:0 port):

The VNC desktop is:      Frambuesio:0
PORT=5900

请注意netstat输出,现在位于在职的健康)状况:

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)

为什么我的 VNC 服务器出现故障以及如何解决此问题?

答案1

问题似乎只是 VNCServer 上的默认参数与不正确的(针对您的情况)选项。

从命令行vncserver帮助:

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

这应该可以解决您的问题:

vncserver -localhost no

解释原始问题中的最后一个示例,请注意0.0.0.0:5900“监听连接”的含义从任何地方在 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)

同时,请注意127.0.0.1:5901“监听连接”的含义来自本地主机在 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)

答案2

我遇到了同样的问题并解决了。从命令行运行:

tigervncserver -localhost no :1

通过将选项添加到文件 /etc/vnc.conf 使其永久化:

$localhost = "no"

尽管文件显示默认情况localhost=no并非如此。

相关内容