服务器是Ubuntu 12.04,先在上面安装vnc。因为vnc默认是通过5901端口明文传输数据,远程连接的时候并不安全。一个可行的解决方案是,vnc走ssh的加密隧道,实现安全通信。
假设ubuntu服务器当前已经成功安装了ssh,我们能顺利连接。先安装vnc:
sudo apt-get install vnc4server第一次启动,会要求输入8位密码:
vncserver启动成功后,我们用vnc viewer连接过去可以看到此时并没有桌面。接着打开配置文件:
sudo vi ~/.vnc/xstartup删除全部内容,直接将如下全部代码复制过去,保存:
#!/bin/sh # Uncomment the following two lines for normal desktop: unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & # x-window-manager & export DESKTOP_SESSION=ubuntu-2d export GDMSESSION=ubuntu-2d export STARTUP="/usr/bin/gnome-session --session=ubuntu-2d" $STARTUP这时,关闭之前的,再重新启动一次就可以看到桌面了。
vncserver -kill :1 vncserver -geometry 1280x800(-geometry可指定vnc桌面的分辨率,这里我设成我笔记本屏幕的分辨率)
现在使用VNC Viewer就可以连接成功了,但此时它会提示当前连接没有加密。
这里我使用了Windows下的putty这个小软件,它是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。官方下载地址: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
接下来会使用ssh tunnel,将服务器的5901端口映射到本地的5901端口,使得vnc连接时能使用这条加密tunnel。
打开putty,在红线处输入服务器的ip。等全部设置完后,可以在save session处输入一个名字,点击save按钮。这样下次就不用再配置了,直接点击相应进行load就好。
设置每隔10秒发送包过去,防止自动断开。
设置tunnel,记得输入后要点击add。
点击open,按提示输入账号密码连接成功后就可以了。
这时候我们使用vnc viewer直接连localhost:1就可以了。