之前用的好好的vnc Viewer,过了一段时间,突然无法正常连接了,在折腾一段时间后,终于理清遇到的问题,感觉像打败了白衣秀士一样爽。
1.启动vncserver
第一步需要检查vncserver是否正常启动
bash
onekey@OptiPlex:~$ ps -ef | grep vnc
root 4715 1 0 8月12 ? 00:02:17 /usr/bin/x11vnc -auth guess -forever -loop -noxdamage -repeat -rfbauth /home/onekey/.vnc/passwd -rfbport 5900 -shared
onekey 12392 6005 0 06:59 pts/24 00:00:00 grep --color=auto vnc
onekey 15174 1 0 9月23 ? 00:00:00 Xtightvnc :1 -desktop X -auth /home/onekey/.Xauthority -geometry 1024x768 -depth 24 -rfbwait 120000 -rfbauth /home/onekey/.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
onekey 19716 1 0 9月23 ? 00:00:00 Xtightvnc :4 -desktop X -auth /home/onekey/.Xauthority -geometry 1024x768 -depth 24 -rfbwait 120000 -rfbauth /home/onekey/.vnc/passwd -rfbport 5904 -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
onekey 21194 1 0 9月23 ? 00:00:00 Xvnc4 :2 -desktop OptiPlex:2 (onekey) -auth /home/onekey/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /home/onekey/.vnc/passwd -rfbport 5902 -pn -fp /usr/X11R6/lib/X11/fonts/Type1/,/usr/X11R6/lib/X11/fonts/Speedo/,/usr/X11R6/lib/X11/fonts/misc/,/usr/X11R6/lib/X11/fonts/75dpi/,/usr/X11R6/lib/X11/fonts/100dpi/,/usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/ -co /etc/X11/rgb
使用ps命令,可以查看vnc占用的端口,可以看到我这边有三个类型的vncserver,x11vnc,Xtightvnc,Xvnc4,而实际上主屏控制只有X11vnc,其他端口如5901,连上去之后控制的是副屏,不是主屏
2.检查网络是否可达
vncserver启动之后,需要检查该端口外网是否可达,另找一个机器,执行命令
ruby
test@test-7:~$ telnet 10.88.88.39 5900
Trying 10.88.88.39...
telnet: Unable to connect to remote host: Connection refused
test@test-7:~$ telnet 10.88.88.39 5900
Trying 10.88.88.39...
上诉两种情况,第一种一般是网络是通的,端口未启,直接拒绝,第二种一般是有策略拦截,一直阻塞,出现第二种情况,需要查看防火墙,iptables策略等
sql
onekey@OptiPlex:~$ sudo iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 NFQUEUE all -- 0.0.0.0/0 0.0.0.0/0 NFQUEUE num 0
Chain FORWARD (policy DROP)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
可以看到我这里有一条策略做了拦截,删除它
ruby
onekey@OptiPlex:~$ sudo iptables -D INPUT 1
onekey@OptiPlex:~$ sudo iptables -L -n --line-numbers
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain FORWARD (policy DROP)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
再次测试
ruby
test@test-7:~$ telnet 10.88.88.39 5900
Trying 10.88.88.39...
Connected to 10.88.88.39.
Escape character is '^]'.
RFB 003.008
终于通了
客户端连接
windows客户端可选tightVNC Viewer, VNC Viewer等,前面两步确认OK后,基本问题不大了,这里需要注意两点
1.连接的端口号
不同的端口号对应的屏幕是不一样的,可能是主屏,也可能是副屏
2.密码校验
这里的密码是vnc的密码,不是服务器的账号密码,在服务器执行vncpasswd可以修改密码