用SSH实现X11转移

用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 user@192.168.10.5&

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

,

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

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

kde

如果你想访问Debian 机器,你可以用下面的命令:

xterm –display :12.0 –e ssh –X user@192.168.10.6&

使用下面的命令在远程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 终端模拟器,它主要由simontatham 编写和维护。

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

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

打开putty ,首先,设置连接信息,在主机名(或ip 地址)区域输入远程服务器的主机名或ip 地址,连接类型选择“SSH ”,端口输入“22”,在“连接”树节点中,找到SSH ,展开它你将看到隧道窗口,点击“启动X11转发”,

,

默认设置X 显示在“localhost:0”,现在,回到“会话”保存该连接配置信息,取一个你喜欢的名字,我们习惯用ip 地址来命名。

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

标签: