原来一直在使用PuTTY+SSH登录Linux,如果要使用图形界面,再加上Xming,觉得已经比较安全和方便了。唯一感觉不完美的是不能直接使用Linux桌面。最近看到关于VNC的文章,可以直接访问远程桌面。下面是配置Windows下通过VNC访问Linux远程桌面的一点体会。
Linux主机:192.168.111.122,运行VNC服务和SSH服务。
Windows主机:192.168.111.189,运行VNC客户端VNC Viewer。
1. 首先要在Linux中安装和开启VNC服务,VNC开启了3个监听端口。
# netstat -tlnp | grep Xvnc
tcp 0 0 0.0.0.0:5801 0.0.0.0:* LISTEN 15830/Xvnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 15830/Xvnc
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 15830/Xvnc
2. 安装VNC Viewer后,输入"192.168.111.122:1",再输入口令即可登录到桌面,此时端口状态为:
# netstat -tanp|grep Xvnc
tcp 0 0 0.0.0.0:5801 0.0.0.0:* LISTEN 26855/Xvnc
tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 26855/Xvnc
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 26855/Xvnc
tcp 0 0 192.168.111.122:5901 192.168.111.189:1690 ESTABLISHED 26855/Xvnc
可见实际上连接的端口为5901。分别尝试改写成5901,5801,6001,也只有5901能建立连接。有文章也提到VNC 3.x的默认端口是8500,4.x默认的端口是5900。
其实到此为止,就可以远程使用Linux桌面了。下面的步骤是为了提高VNC的安全性,使其通过SSH Tunnel访问Linux桌面。
3. 和使用PuTTY+SSH访问Linux主机一样,在PuTTY中建立一个访问Linux主机的连接。此时即可以与linux host的22端口建立SSH连接。
linux host windows host
192.168.111.122:22 <---------- SSH ----------> 192.168.111.189
在PuTTY的Connection->SSH->Tunnels中,source port填写5901,destination填写localhost:5901,类型为local,然后添加。在使用SSH登录登录到linux主机后,在两台主机间产生了一个SSH Tunnel。两台主机上5901端口上收发的数据都会通过SSH Tunnel传输,从而保证了安全性。如果希望使用SSH Tunnel,此时在VNC Viewer中填写的服务器地址应该写为localhost:1(或5901)。
linux host windows host
192.168.111.122:5901 <------ SSH Tunnel -------> 192.168.111.189:5901 <--------> VNC Viewer
192.168.111.122:22 <---------- SSH ----------> 192.168.111.189
也可以使用PuTTY包中的plink建立SSH Tunnel。
plink -N -L 5901:192.168.111.122:5901 192.168.111.122
参考资料:
http://linux.chinaunix.net/bbs/viewthread.php?tid=495459
http://www.chedong.com/blog/archives/001246.html