有童鞋在 AskWowUbuntu 上提出了这样一个问题,要求能远程控制主机运行上面的程序,而且不影响远程主机用户的使用,两者互不影响。个人认为如果只是想运行其中某一软件的话,通过 SSH 的 X11forwarding 功能来执行是最简单方便的,所以把方法写在了这里。
1 在远程 Ubuntu 主机上安装 OpenSSH Server
sudo apt-get install openssh-server
确认 /etc/ssh/sshd_config 文件中的 X11Forwarding 为打开 (Ubuntu 上安装后默认是打开的,所以一般不用做调整。)
X11Forwarding yes
如果远程主机没有装 X 的话,只需要安装 xauth 组件就可以了。
sudo apt-get install xauth
2 好了,现在就可以在本地主机上执行以下命令可以运行远程主机上的 X 程序了,记得更改里面的 username , hostip 及 app-name 为你的参数。
ssh -XC username@hostip app-name
X 表示启用 X11 转发,C 表示启用 gzip 压缩。或者也可以用 -Y 参数 (ssh -YC username@hostip app-name ) ,- Y 表示用 Trusted X11 forwardings (信任连接)方式 [参考]。
- 样例:比如我要运行远程主机上的 VirtualBox
ssh -XC riku@192.168.1.2 VirtualBox
当然,运行的时候,调用的文件都是远程主机上的。
[ FAQ ]
1 能不能不要每次都输入密码?
利用 Key 认证方式。输入命令 ssh-keygen 后一直回车产生 SSH key (公钥/密钥),然后 ssh-copy-id username@hostip 来上传公钥,下次就不用输入密码可直接登录了。
2能不能不用每次都输入命令?
可以在桌面上创建一个快捷方式,其中类型必须选择为终端应用程序,命令部分就为 ssh -XC riku@192.168.1.2 VirtualBox 这样的。以后就可以直接点击桌面图标来运行远程主机上的程序了。
10 Responses to 通过 SSH 运行远程主机上的 X 程序
xndcn
三月 10th, 2011 at 5:31 下午
嗯哼,我现在就是在宿舍的破笔记本上,SSH -X到实验室的机器上,开firefox回复的...就是没声音,有什么办法吗?
感谢当年创立X协议的人!
[Reply]
xndcn
三月 10th, 2011 at 5:38 下午
还有更猛的XDMCP,把整个X桌面都转发过来。以前试过同时4、5人连接服务器,开大型CAD软件,感觉不到丝毫迟滞...
[Reply]
snowhawkyrf
三月 10th, 2011 at 5:41 下午
方法很好,多谢!不过如果能看到完整的图形界面,能像用自己电脑一样就更好了……实验室有位师兄以前搞定过,是windows连ubuntu,进去后是一个桌面,而ubuntu机器登录后看到的竟然是另外一个桌面,两者互不干扰,还很方便使用。他没开多用户。
[Reply]
xndcn Reply:
三月 10th, 2011 at 6:30 下午
@snowhawkyrf, XDMCP就是转发完整的图形界面...windows下面用xmanager就行
[Reply]
lds
三月 10th, 2011 at 9:28 下午
越来越发现ssh强大了
[Reply]
书痕
三月 11th, 2011 at 8:15 上午
果然是相当的犀利阿
[Reply]
riku Reply:
三月 11th, 2011 at 9:23 上午
@书痕, 换头像了啊,真友爱。
[Reply]
ptubuntu
三月 11th, 2011 at 9:07 上午
安装后。使用命令还不是跟ssh一样的效果呀。
[Reply]
riku Reply:
三月 11th, 2011 at 9:30 上午
@ptubuntu, 这句话听不明白啊,这就是 ssh 命令啊。
[Reply]
Steven Lee
三月 13th, 2011 at 8:45 上午
windows下面用xmanager就行
>Xmanager不是免费的吧?Win下还是建议用Xming。当然不建议使用Win。XD
[Reply]