ssh tunneling应用案例-AWS EC2 vnc图形化桌面的支持
一般地,无论是AWS EC2还是阿里云的云主机,linux系统默认都只提供ssh登录方式。如果你是一个技术控,非常希望把图形化界面给折腾出来,这其中就不需有vnc server的支持,除此之外,还涉及到如vnc client如何和vnc server通信的问题。 有两个方案:
1. 手工在安全组中开放更多的端口
2. 通过ssh隧道来桥接vnc client和server的通信链路
第一种方式非常容易理解,我们重点讨论第2种,也就是在不开放更多端口情况下,仅使用ssh的22端口来实现vnc连接
具体地,需要以下的步骤
1. 创建好aws ec2或者阿里云主机
2. 在windows客户端上安装Realvnc
3. ssh到ec2上执行以下命令(以ubutu为例子)安装vncserver及其依赖的组件
sudo apt-get update sudo apt-get upgrade sudo apt-get install ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal xfce4 vnc4server
4.启动vncserver,输入vnc password
随后编辑~/.vnc/xstartup文件并替换为以下内容:
#!/bin/sh # Uncomment the following two lines for normal desktop: unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc unset DBUS_SESSION_BUS_ADDRESS startxfce4 & [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & gnome-panel & gnome-settings-daemon & metacity & nautilus & gnome-terminal &
5. 重点来了,开启ssh的端口forwarding
ssh -L 5902:localhost:5902 -i amazon.pem ubuntu@ec2–52–90–172–228.compute-1.amazonaws.com
再启动vncserver
vncserver -geometry 1340x750
需要注意的是,1340x750是指的我的windows桌面次寸。随后
6.使用Realvnc来连接localhost:5902并且输入上面已经设置过的pasword.(there is a correlation between them (eg. display 1 = vnc port 5901, 6001 and display 2 = vnc port 5902 etc)
积小流以汇江海,细微做起