我很茫然,我已经按照指南进行了https://www.linode.com/docs/applications/remote-desktop/using-vnc-to-operate-a-desktop-on-ubuntu-12-04配置我的无头服务器以允许通过vnc
.我还没有使用任何 ssh 转发,但只是想直接连接到端口上的服务器5901
,但我不能,我只收到一条消息说连接到主机主机名::5901已关闭但我可以确认ps ax | grep vnc
我的服务器正在运行:
$ ps ax | grep vnc
21895 ? S 158:03 Xtightvnc :1 -desktop X -auth /home/semios/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 120000 -rfbauth /home/semios/.vnc/passwd -rfbport 5901 -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/ -co /etc/X11/rgb -localhost
22477 pts/5 S+ 0:00 grep --color=auto vnc
并使用 netstat 我可以确认它正在侦听端口5901
:
$ netstat -an | grep 5901
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN
那么这里可能出了什么问题呢?另外,我似乎找不到Xtightvnc
可以为我提供更多信息的日志文件......
如果我连接$ ssh -p 2200 -X user@server
然后连接我的 VNC 客户端,127.0.0.1:5901
我会收到相同的消息与主机 127.0.0.1::5901 的连接已关闭。
答案1
因为您已使用参数调用 VNC 服务器-localhost
,所以它仅接受本地主机接口上的连接 - 正如输出127.0.0.1:5901
中的条目所确认的netstat
那样(外部开放接口将读取0.0.0.0:5901
)。从Xvnc
联机帮助页:
-localhost
Only allow connections from the same machine. Useful if you use
SSH and want to stop non-SSH connections from any other hosts.
See the guide to using VNC with SSH on the web site.
在此配置中,您必须隧道连接,否则将被拒绝。要通过 SSH 建立隧道,您可以执行以下操作:
ssh -p 2200 -L5901:localhost:5901 user@remotehost -Nf
(这-Nf
是可选的:它只是将隧道放在后台)然后启动 VNC 客户端并将其指向隧道端点:详细信息将取决于您使用的客户端,例如
vncviewer localhost:1