VNC over SSH tunnel, 意为建立在SSH通道上的VNC. 这样做可以达到2个目的, 一是可以增强VNC的安全性, 二是如果VNC速度太慢, 可以走SSH通道作为代理. 本文介绍其配置方法.
使用环境:
A机在韩国, IP为1.1.1.1, 速度较快
B机在美国, IP为8.8.8.8, 速度慢, 且有一个VNC桌面(ID号为:55)
由于我们直接连接B机的VNC桌面会非常慢, 此时我们可以借助A机的SSH服务跳转, 以达到加速VNC桌面的目的.
本地也是Linux环境, 本机有多位用户需要登陆到美国的VNC桌面上
1, 在A机(用于代理的机器)上以bear用户的身份生成SSH-Key, 并将私钥拷贝回本地
ssh-keygen -t rsa #一路回车即可 chmod 700 ~/.ssh cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys #必须做,否则在连接VNC的时候仍需要输入bear的密码
然后将私钥(id_rsa文件)拷贝回本地, 注意不是id_rsa.pub文件.
2, 在本地(也是Linux系统)指定SSH Tunnel相关参数
sudo apt-get install xvnc4viewer #安装VNC客户端 #定义VNC_VIA_CMD变量,指定SSH代理的端口(22),key文件(id_rsa),用户名(bear) chmod 600 /home/bear/id_rsa #必须是600权限,否则仍需要输入密码 export VNC_VIA_CMD='/usr/bin/ssh -x -p 22 -i /home/bear/id_rsa -l bear -f -L %L:%H:%R %G sleep 20'
然后就可以使用SSH Tunnel了
vncviewer -via 1.1.1.1 8.8.8.8:55 -FullScreen #使用SSH Tunnel连接远程VNC桌面 vncviewer 8.8.8.8:55 -FullScreen #不使用SSH Tunnel,直接连接远程VNC桌面
小提示: 全屏状态下, 可以按F8键呼出右键菜单, 然后在右键菜单里退出全屏.
当然也可以写成如下格式
vim /etc/profile.d/vnc.sh #写入如下2行 export VNC_VIA_CMD='/usr/bin/ssh -x -p 22 -i /home/bear/id_rsa -l bear -f -L %L:%H:%R %G sleep 20' alias myvnc='vncviewer -via 1.1.1.1' myvnc 8.8.8.8:55 -FullScreen #使用SSH Tunnel连接远程VNC桌面
3, 多用户使用问题
在第2步中, 我们将/home/bear/id_rsa的权限设置成了600, 然后使用SSH Tunnel的时候才不会要求输入bear用户的密码. 细心的你肯定会发现, id_rsa的权限必须设置成600, 如果你把它设置是660的话, 使用SSH Tunnel时会遇到Permissions 0660 for ‘/…/id_rsa’ are too open.并且要求再次输入SSH密码. 这意味着, 只有一个人(即id_rsa文件的属主)可以使用这个SSH Tunnel.
解决办法:
如果id_rsa文件的属主是root的话, 那么该文件的权限可以被设置是440.
chown root:mygroup /home/bear/id_rsa chmod 440 /home/bear/id_rsa
然后, 只要是mygroup组里的用户, 都可以使用此id_rsa文件来使用SSH Tunnel了. 有人说在CentOS6里设置成660同样有效, 我没有试过, 有兴趣的同学自己测试一下吧.