按:这篇文章是很早之前发布在个人 Google Site 上的,已经不知具体时间了。在转移到本地时,有少许更新。
在《SSH Server/Client 安装和连接》中已经提到 SSH -X
,通过它可以在在本地桌面系统上使用远程的 Linux Server 上的 GUI 程序,远程系统有无 X 环境都无关紧要。
Linux 的 X 环境,运行 GUI 程序,分为两个部分,X Server 和 X Client。X Server 负责 GUI 展示,它管理显示器、键盘和鼠标。X Client 负责程序逻辑,在需要 GUI 界面时,则向 X Server 发送请求。X Client 和 X Server 是分开的,可以运行在相同或不同的机器上。
X11Forwarding 机制使得远程系统上执行的 GUI 程序(X Client),在本地展示 GUI 界面(X Server)。在 local 通过 X 操作 remote 的程序,X Client 是 remote server, X Server 是 local,这点要注意。
OS: Ubuntu Server 14.04 LTS(不支持 GUI)
打开 /etc/ssh/sshd_config
, 检查下面两条,是否存在并开启:
X11Forwarding yes
AllowTcpForwarding yes
如果不存在,则添加,如果没开启,则开启。
保存并重启,重启的方法依据不同的发行版可能不同,具体参《用SSH 的记录》
我做实验时,用的是 Debian 7 和 Ubuntu Kylin 14.10,其他 Linux 发行版是类似的。
执行下面这条命令即可:
ssh -X iridium@192.168.0.106
当在 Shell 中执行 GUI 程序时,就会自动调用本地的 X Server 了。
Linux 对程序员真是太友好了,下面是 Windows 的方式,就比较麻烦了。
可以结合 XMing 和 putty 实现在 Windows 中操作远程 Linux Server 的 GUI 程序。
打开 X11 的设置页,选中 Enable X11 forwarding
再返回 Session 界面,点击 Open 登录即可。执行 GUI 程序时,本地 XMing 的 X Server 就会启动。
ssh -X 是可以传递的。A 通过 ssh -X 登录 B,再以 ssh -X 登录 C,在 A 中可以打开 C 的 GUI 程序。
实验如下:
我先从 hostHome 以 ssh -X 登录到 hostCompany,再从 hostCompany 以 ssh -X 登录到 hostWork,结果,我可以在家里的电脑上操作我的工作主机的 GUI 程序。
参: