用SSH实现X11转发

有多种不同的方法实现连接到远程服务器或工作站,你可以使用NoMachine的NX服务器或GPL解决方案FreeNX,其他工具类似RealVNC或VNC提供远程控制软件允许你查看和通过网络与桌面应用程序进行交互。 一种加强通讯安全的方法就是使用SSH通过X11隧道或端口转发技术


有多种不同的方法实现连接到远程服务器或工作站,你可以使用NoMachine的NX服务器或GPL解决方案FreeNX,其他工具类似RealVNC或VNC提供远程控制软件允许你查看和通过网络与桌面应用程序进行交互。

一种加强通讯安全的方法就是使用SSH通过X11隧道或端口转发技术实现,开发SSH是为了替换不安全的telnet,ftp,rlogin,rsh软件,FreeNX已经可以完美地运用这个技术,在本文中我将展示如何使用SSH实现X11转发,而不用任何附加的软件,另外,我将解释如何在windows xp客户端上用PuTTY和X-Deep/32运行Linux应用程序。

为了对你有所启发,我将用一小段解释都需要些什么,我将远程访问两台机器:
运行KDE的OpenSUSE 10.2和运行Gnome的Debian 4.0

客户端机器我使用包括ssh客户端的OpenSUSE和使用Putty的windows xp,从ssh的角度来看,远程机器就是服务器,本地机器就是客户端,实验环境准备如下图

第一步:准备ssh服务器

首先,你必须在你的服务器上安装ssh软件包,我将使用操作系统发行版提供了OpenSSH软件包,请核对在两个发行版中如何寻找和安装rpm包,在某些情况下它已经安装在服务器上了(有可能将其作为标准软件包在安装系统时就安装了)。

如果你是从源代码建立的软件,确认编译时选择了X转发支持,ssh 3.2或更高版本的二进制软件包包括运行时X检测。
同时,确认在你的/etc/ssh2/sshd2_config文件中有下面这一行:
AllowX11Forwarding              yes

准备好之后,使用下面的命令启动sshd服务:
/etc/init.d/sshd start
service sshd start

第二步:使用一个Linux客户端
你或许已经注意到Linux通过Ctrl-Alt-F1(-F12)组合键在虚拟控制台之间切换。通常,没有理由离开默认的控制台(虚拟控制台#7),除非你试图再次登陆或问题诊断。

请象下面这样为测试目的进行控制台切换:
Ctrl-Alt-F2  - 切换到一个新的shell提示符
Ctrl-Alt-F12  - 切换到一个空的控制台
Ctrl-Alt-F7   - 切回到X图形显示

当你同时敲击了Ctrl-Alt-F12时,你会看到在这个控制台没有任何实质内容,让我们在这里显示远程机器的GUI图形界面,我们使用组合键可以很容易地从你的客户端切换到远程机器。

登陆到你的客户端机器,作为一个常规用户运(不需要root权限)行KDE并打开一个控制台,我们将在控制台12上使用下面的命令打开一个X会话:
X :12.0 vt12 2>&1 >/dev/null &

这将发生所有不需要的输出或全部黑屏但是将在控制台12上打开另外一个X窗口,如果你现在用Ctrl-Alt-F12进行切换,你将看到下面这样的显示(空的灰暗的背景):

使用Ctrl-Alt-F7切回到原始的图形显示,回到之前你已经打开的控制台,使用下面的命令创建一个到远程服务的ssh连接:
xterm –display :12.0 –e ssh –X [email protected]&

“User”应该是远程系统上的一个有效用户,你可以(无疑地)用服务器的有效域名替换ip地址。

如果你现在切回到控制台12(Ctrl-Alt-F12),在输入正确的密码后你会得到一个提示符:

在远程机器OpenSUSE上用下面的命令启动KDE:
kde

如果你想访问Debian机器,你可以用下面的命令:
xterm –display :12.0 –e ssh –X [email protected]&

使用下面的命令在远程Debian机器上启动Gnome:
gnome-session &

请注意两个例子中都有一个x-term窗口显示登陆信息,你可以最小化它,但是不应该关闭它。

如果你想取消连接,只需要关闭xterm窗口或使用Ctrl-Alt-Backspace组合键。
如我前面提到的一样,现在你可以在两台机器上工作,通过Ctrl-Alt-F7和Ctrl-Alt-F12组合键来切换。

第三步:使用一个windows客户端

不幸的是我们在windows上使用了附加的软件,我们使用putty从windows xp客户端到远程服务器进行连接,putty是一款免费的win32和unix平台下可用的telnet、ssh实现,附带一个xterm终端模拟器,它主要由simon tatham编写和维护。

如果你想用X11转发特色,你需要给你的windows机器准备一个X显示服务器,如Cygwin/X,X-win32,Exceed或X-Deep/32,可能在你本地机器上显示号0上安装,如果它没有这样安装,请查看X服务器的man手册,它会告诉你该怎么做。

我们将在这个实验环境中使用X-Deep/32作为X显示服务器,请首先下载并安装它,在http://www.caslab.queensu.ca/LabHelp/XServer/你可以找到一个下载链接以及详细的介绍和附加的帮助。

打开putty,首先,设置连接信息,在主机名(或ip地址)区域输入远程服务器的主机名或ip地址,连接类型选择“SSH”,端口输入“22”,在“连接”树节点中,找到SSH,展开它你将看到隧道窗口,点击“启动X11转发”,默认设置X显示在“localhost:0”,现在,回到“会话”保存该连接配置信息,取一个你喜欢的名字,我们习惯用ip地址来命名。

因为X服务器运行在后台,现在你应该可以运行X11应用程序,在下一张图中你可以看到Linux应用程序如xclock和konqueror运行在windows xp桌面上。

你可能感兴趣的:(ssh)