Linux XDMCP HOWTO

Thomas Chao

           
        

修订历史
修订版 v1.42007年6月11日
添加了关于现在流行的 Ubuntu 7.0.4、RH Commercial Workstation v.3、Fedora Core 6 和 7、新的 Mandriva 的信息。
修订版 v1.32003年1月2日
添加了关于 Red Hat 7.3 & 8.0、Mandrake 8.2 & 9.0、SuSE Linux 配置和内容更新的信息。
修订版 v1.22002年3月15日
添加了更多关于 Red Hat 7.2、Mandrake 8.1 和 Slackware 8.0 Linux 配置以及 SSH X11 转发的信息。
修订版 v1.12001年3月20日
修订并添加了 RH 7.0。
修订版 v1.02000年11月01日
初始修订和发布。

本 HOWTO 描述了如何使用 X 显示管理器(xdm、kdm 和 gdm)和 XDMCP(X 显示管理器控制协议)的组合,为 X 终端提供解决方案,并为高效的远程 X 应用程序环境提供平台。本文档将重点介绍如何使用 XDMCP 设置 X 连接。


目录
1. 简介
1.1. 免责声明
1.2. 反馈
2. 步骤
2.1. 开始之前,一些背景知识
2.2. 安全提示
2.3. 我使用的系统
2.4. 远程客户端部分
2.5. 服务器准备
2.6. 完成步骤的程序
2.7. 测试
3. 使用 SSH 的 X11 转发
4. 故障排除
5. XDMCP 和 GDM (Gnome 显示管理器)
6. 其他参考资料
7. 作者
8. 版权信息

1. 简介

X Window System 是由 MIT 开发的显示和网络协议。X 的构建考虑了网络,能够在远程计算机上运行(图形)会话。其中,X 显示管理器用于从本地系统或另一台计算机启动会话。会话的请求和启动由 XDMCP 处理,XDMCP 代表 “X 显示管理器控制协议”,是一种网络协议。它提供了一种在您的 PC(或 MAC)上运行 X 终端的方法,并使用 X 服务器在显示硬件(鼠标、键盘和视频显示器)和桌面环境之间提供客户端/服务器接口,同时还提供窗口基础设施和标准化的应用程序接口(引自 XFree86 项目主页)。X 终端可以显示为单个窗口或多个窗口,具体取决于您的 X 窗口系统的软件功能和设置。

我一直在寻找使用 Linux 的最佳方式,无论是在家还是在工作中。其中最大的优势之一是能够将旧系统(如 Pentium、Pentium II、Pentium III 甚至 486 和 AMD x86 CPU)重新用作 X 终端(通过使用 Win32 应用程序;如 Hummingbird 的 Exceed、Reflection X、X-Win32 或 X-ThinPro。对于 MAC,请尝试 eXodus),从而从您的任何 PC 远程运行。我发现,有点令人惊讶的是,互联网上有许多文档可以帮助您进行设置,但没有逐步 HOW-TO 格式!这就是我编写本文档的方式,旨在与所有用户分享我的经验。通过使用 X 和 XDMCP,您可以为您的家庭或工作 IT 解决方案构建良好、可靠且低成本的 X 环境。最棒的是,它是免费的!您还会发现,那些被当前 Windows 系统长期遗弃的 PC 可以在 Linux 中完美运行 X!这可以为您节省金钱并爱护地球母亲!

近年来,新的 Linux 发行版通过添加新的用户 UI 变得越来越容易使用。但是,我仍然非常相信在可能的情况下手动控制系统和应用程序,因为这样,我就知道我将在我的系统中以我想要的方式更改什么。因此,我将本文档的重点放在手动配置上。


1.1. 免责声明

对于本文档的内容不承担任何责任。使用本文档中的概念、示例和其他内容,风险自负。由于这是本文档的新版本,因此可能存在错误和不准确之处,当然这可能会对您的系统造成损害。请谨慎操作,尽管这种情况不太可能发生,但作者不对由此造成的任何后果承担任何责任。

所有版权均归其各自所有者所有,除非另有明确说明。在本文档中使用术语不应被视为影响任何商标或服务标志的有效性。

特定产品或品牌的命名不应被视为认可。

强烈建议您在进行重大安装之前备份系统,并定期进行备份。


1.2. 反馈

非常欢迎您对本文档提供反馈。没有您的提交和意见,本文档将不会存在。请将您的添加、评论和批评发送到以下电子邮件地址.


2. 步骤

本节详细介绍了使用 XDMCP 设置 X 终端的步骤。先决条件是已安装并运行 X 的(任何)Linux 发行版。


2.1. 开始之前,一些背景知识

在开始之前,最好对它的工作原理有一个基本的了解。X 服务器通常从 X 显示管理器 (DM) 启动。在此 X DM Wiki 页面中,它为您提供了对其工作原理的基本了解!(更多详细信息请参见下面的 资源LDP HOWTO 页面

几乎所有 Linux 发行版都为您提供了 xdm、kdm 和 gdm 作为您的选择。(本文档将以 gdm 和 kdm 为例)。显示管理器为普通用户提供了一个友好且一致的界面(基于 X 的登录、启动窗口管理器、时钟等)。X 显示管理器管理着 X 显示器的集合,这些显示器可能位于本地主机或远程服务器上。值得注意的是,Xsession 文件是运行您的环境的文件。

当 xdm 运行时,它以两种不同的方式提供显示管理。它可以管理在本地计算机上运行并在 "Xservers" 中指定的 X 服务器,和/或它可以管理使用 XDMCP 的远程 X 服务器(通常是 X 终端),如 "Xaccess" 文件中所指定的。(请参阅 xdm 手册页)。

对于 kdm(随 KDE 桌面一起提供),它是 xdm 的替代品,配置方式相同,只是其文件位于/etc/X11/kdm在 Caldera/SCO 中,/etc/kde/kdm在 Red Hat(和 Fedora Core)中,以及/usr/share/config/kdm,这是一个指向/etc/kde/kdm,在 Mandrake 中。

gdm (Gnome 显示管理器) 是对众所周知的 xdm 的重新实现。gdm 具有与 xdm 和 kdm 类似的功能,gdm 是 Gnome 显示管理器,其配置文件位于/etc/X11/gdm/gdm.confgdm.conf文件包含变量集和 gdm 的许多选项,Sessions 目录包含每个会话选项的脚本;每个脚本都调用/etc/X11/xdm/Xsession以及相应的选项。gdm 具有与 xdm 和 kdm 类似的功能,但它是从头开始编写的,不包含任何原始的 XDM / X Consortium 代码。

RH 8.0 引入了名为 "Bluecurve" 的新图形界面。新界面的目标是 XP 的感觉和风格。在这种情况下,设置没有区别!

有关类似设置的其他良好参考资料可以在以下文档中找到


2.2. 安全提示

不要相信 Linux(或 UNIX)比 MS Windows 更安全的说法!如果用户配置工作做得不好或没有维护安全更新,所有操作系统都容易受到黑客攻击!

您需要记住,X 和 XDMCP 本质上都是不安全的,这就是为什么许多发行版默认情况下都关闭了 XDMCP。如果您必须使用 XDMCP,请务必仅在受信任的网络中使用它,例如防火墙内的公司网络。切勿在没有防火墙保护的开放网络(或互联网)环境中使用它!如果您在家中使用,请记住添加配备防火墙的路由器以进行保护。

测试网络安全性的一个好方法是使用 Gibson Research 的 ShieldsUp 进行测试。它是免费且易于使用的!

XDMCP 连接打开 UDP 端口;因此,它本身无法与 SSH 一起使用。目前,SSH1 和 SSH2 尚未实现安全地转发 UDP 通信。为了使用 SSH 保护连接,该技术称为 X11 TCP/IP 端口转发。查看 为什么需要端口转发? 站点和 资源 区域,以获取更多 HOW-TO 信息。如果您想尝试一下,我在下面添加了一个小节来向您展示它的工作原理。我将仅向您介绍其工作原理的基本概念,更高级的运行方式将留给其他专家和/或 HOWTO。


2.3. 我使用的系统

我已经在以下发行版上测试了运行 GNOME (gdm) 以及 KDE (kdm) 的设置

  • Red Hat:从 RH 8.0 到 6.0。RH Workstation v.3(商业版)。

  • Fedora Core v.5 到 v.7。(新的 RH 免费版本)

  • Mandrake Linux 从 7.2 到 10.0 以及 Limited Edition 2005。我还想在新版本的 Mandriva 2007 Spring 版本上进行测试。

  • Ubuntu 版本 6.x、7.04。

SuSE 7.2(SuSE 现在是新的 Novell Linux)和 Slackware 8.0 的设置已由用户测试,感谢 Peter Van Eerten 和其他帮助测试本 HOW-TO 的用户。(我要感谢所有帮助我完成这个项目的用户)。我尝试过的另一个是 Caldera eDesktop 2.4(现在归 SCO 所有),它类似于 RH 的设置,只是它使用 KDE。我没有机会在其他 Linux 发行版(如 Debian、Turbolinux、Gentoo 等)上进行测试。但是,设置应该类似,并且应该可以正常工作。如果您成功设置了除上述发行版以外的其他发行版,请与我分享。我会将它们添加到本文档中。

我使用的 PC 硬件是 IBM PC 克隆机,运行 Intel Celeron 2.9 GHz 处理器,配备 1 GB 内存和 160 GB ATA-133 硬盘。我目前(在 2007 年)用于测试的最旧系统是使用 Intel Pentium II 450 MHz PC,配备 128 MB 内存,并且运行良好。(我在 2003 年在一台旧的 Pentium 100 MHz PC 上进行了测试,运行良好)。我在我的 Intel 克隆 M/B 中使用内置的快速以太网 NIC。在我的旧机器中,我使用 3Com 10/100 (3C509B) NIC,配备 ATAPI DVD-ROM 和 IOMEGA ZIP 驱动器。我还使用 Agere 无线 LAN 卡在我的 IBM T21 笔记本电脑上测试了它。我还测试了我在家中的一个系统上的设置,该系统使用运行 Fedora Core 6 的 AMD 64 位 CPU。


2.4. 远程客户端部分

我在我的 PC 上使用了 Hummingbird Exceed 10.0(Exceed 6.x 和 7.0 也工作良好),并在 Windows NT 4.0、Windows 2000 Pro、Windows XP 上进行了测试。我发现其他流行的选择是 X-Win32 和 X-ThinPro,但我没有机会测试它们。如果您碰巧有开源应用程序以及商业应用程序,也有很多可用的。


2.5. 服务器准备

在 RH 7.x 和其他较新的发行版中,您需要设置 DNS 查找,以便某些网络功能能够正常工作(例如我们将用于测试设置的 telnet)。您可以使用 “netstat -r” 和/或 “arp -a” 命令来验证您的 DNS 设置或响应时间。如果您处于小型环境(如家庭或小型办公室),没有自己的 DNS 并且依赖于您的 ISP 的 DNS 服务器,则在 “/etc/resolv.conf” 文件中添加您的 Linux 工作站或服务器名称的条目。如果您仅在实验室或家庭中使用它,那么您可以将所有工作站的主机名添加到 “/etc/host” 中的本地静态主机表中。您需要 root 权限才能更新命名信息。

要为 XDMCP 会话准备您的 X 服务器,您需要确保正确安装了以下内容

  1. 安装您的 Linux 操作系统。在我的情况下,我在实验室中主要使用 Fedora Core 6,在家中使用 Ubuntu 7.04。如果您计划使用 SSH 端口转发,则需要安装 OpenSSH 软件包或使用您的内核编译 SSH。此外,大多数发行版现在默认都安装了防火墙(除非您选择不安装)。如果您没有在设置 XDMCP 时添加防火墙规则或临时禁用它,则可能会遇到问题。我将不在此处详细介绍防火墙规则,因为这不是本文档的重点。我将仅与您分享如何首先使其工作,您可以自己进行微调。

    要显示您的防火墙规则,在内核 2.2x 中,请使用命令 ipchains -L 列出您的默认规则集。要临时禁用它,请使用命令 ipchains -F 清除规则(不用担心,它将通过重新加载或重新启动来恢复)。对于内核 2.4x 及更高版本,请将命令 ipchains 替换为 iptables。要开始使用它,您可以尝试编辑 /etc/sysconfig/ipchains 文件并注释掉此规则(这是来自用户的反馈。您可以自己测试一下)

    -A input -p upd -s 0/0 -d 0/0 0:1023 -j REJECT

    并插入以下两条规则以允许数据包通过端口 177

    -A input -p udp -s 0/0 -d 0/0 0:176 -j REJECT
    -A input -p udp -s 0/0 -d 0/0 178:1023 -j REJECT

    (注意:XDMCP 使用 TCP、UDP 端口 177 和 TCP 端口 6000 到 6005。xfs 服务器在我们的设置中使用端口 7100)。

    您应该能够以类似的方式使用 iptables。(在 资源 区域或此 设置示例 中查找 iptables 参考资料)。

    有关更多防火墙详细信息,请查看 IP Masquerade HOWTO 页面。

    另一种简单的方法是添加仅接受来自您信任的工作站的某些 IP 地址的规则。请随时使用 iptables 命令进行实验。同样,我将不在此处介绍详细信息。我很幸运,因为我的公司防火墙可以保护我免受外界的侵害。

    如果您想使用 GUI 工具来配置使用 iptables 的防火墙,请尝试这个不错的工具:Firestarter

  2. 设置您的网络。要进行测试,您可以使用 pingftptelnet 命令来确定您的网络是否正常工作。RH 7.x 及更高版本默认情况下未启用 telnet 守护程序(出于安全原因)。如果您希望使用它进行测试,请记住启用它。您始终可以在完成后将其关闭(在 RH 中使用 ntsysv,或在 Ubuntu 和 Debian 中使用 rcconfsysvconfig,并具有 root 权限)。另一件事是要记住防火墙规则在那里。添加您自己的规则或临时禁用它(如上所述)以使这些命令起作用。

  3. 设置 X。不要设置高于远程用户显示器能够使用的分辨率。较新的版本现在能够探测视频芯片组并为您确定这一点。一些较旧的 (X) 版本可能无法做到!通过键入 startxtelinit 5 来测试 X 服务器。确保 X 正常运行。

  4. 为将通过 X 终端访问的用户创建必要的用户帐户(和关联组)。


2.6. 完成步骤的程序

虽然 X 可以使用本地字体,但在网络环境中最好使用 xfs 字体服务器。如果这是您在 Linux X 环境中想要的,则需要使用 X 字体服务器 (xfs) 或 XF86Config 和 XF86Config-4 配置文件中的硬编码字体路径来提供字体。如果您计划使用 xfs 字体服务器(在此处查看 xfs 优势)。xfs 服务器还可以减轻本地工作站的负担。如果您计划使用本地字体,则可以跳过步骤 1。

这些是我用于设置 X 服务器以接受 XDMCP 请求的步骤

  1. 在早期版本的 RH 和 Mandrake 中,修改/etc/rc.d/init.d/xfs并进行以下更改。如果端口未设置为 7100,则更改所有行(这是字体服务器端口所在的位置)。

    daemon xfs -droppriv -daemon -port -1

    改为

    daemon xfs -droppriv -daemon -port 7100

    在一些新的发行版中,默认情况下,出于安全增强目的,不再侦听 TCP 端口!如果您想设置 X 字体服务器,则需要执行以下步骤

    更改此行/etc/rc.d/init.d/xfs(对于某些发行版,则为 /etc/init.d/xfs):

    daemon xfs -droppriv -daemon

    改为

    daemon xfs -droppriv -daemon -port 7100

    在 Ubuntu 7.04 桌面版本中,您需要下载并安装 xfs 软件包。然后修改/etc/init.d/xfs并更改以下行

    start-stop-daemon --start --quiet $SSD_START_ARGS -- -daemon \

    改为

    start-stop-daemon --start --quiet $SSD_START_ARGS -- -droppriv -daemon -port 7100 \

    然后,在/etc/X11/fs/config中,注释掉此行

    # don't listen to TCP ports by default for security reasons 
    #no-listen = tcp
          

    如果您更改或添加端口,请使用此命令重新启动 X 字体服务器(需要 root 权限)

    service xfs restart

    您不必使用端口 7100。您可以设置不同的端口,只要您首先仔细计划以确保使用端口号时没有冲突,并进行相应的更改即可。最好在这样做之前咨询您的 Linux 管理员,以便他/她知道该端口已被占用!不同的 Linux 发行版可能会将 xfs 放在 /etc/rc.d 下的不同文件夹中。如果是这种情况,您可以搜索它。

  2. 如果您计划使用 XDM,请修改/etc/X11/xdm/xdm-config并进行以下更改。默认情况下(在大多数 Linux 发行版中),设置了此行,因此它不侦听 XDMCP 连接。这是出于安全原因。对于 Caldera 和其他使用 kdm 的发行版,此文件位于/etc/X11/kdm。找到此行

    DisplayManager.requestPort:     0

    并将其注释掉,如下所示

    ! DisplayManager.requestPort:     0

    请记住,这不会影响 gdm。有关 gdm 设置,请参阅以下部分。

  3. /etc/X11/xdm/Xaccess中,更改此项。(这允许所有主机连接)。对于使用 kdm 的 Caldera,此文件位于/etc/X11/kdm。将安全性设置为 644 (chmod 644)

    #*    # any host can get a login window

    改为

    *     # any host can get a login window

    上述设置处于广播模式,它将列出所有正在侦听并愿意管理您的 X 连接的 X 服务器。如果您只想允许某些连接,请使用同一文件中的 CHOOSER 部分。示例可以在 资源 中找到。

  4. 如果您计划使用 GDM 作为默认值,则 gdm 登录窗口的一个好处是它允许您在 KDE 和 GNOME 之间切换。对于 gdm,编辑/etc/X11/gdm/gdm.conf。这将激活 XDMCP,使其侦听请求。对于 kdm(如果您在安装时选择 KDE 作为 DM),请编辑/usr/share/config/kdm/kdmrc对于 Mandrake 和/etc/kde/kdm/kdmrc对于 Red Hat 或/opt/kde2/share/config/kdm/kdmrc对于 Slackware 版本 (KDE2)。更改此行

    [xdmcp] 
    Enable=false (may shown as 0 in some distributions)

    改为

    Enable=true (or 1 in some distributions)

    确保 “Port=177” 在此块的末尾,即,通过注释掉行 “#Port=177”。

    (作为 Ubuntu 用户的旁注,他们只关心易用性,这是您可以做的(只需打开 XDMCP 而无需 xfs)。从 “系统” 菜单中,转到 “管理” 和 “登录窗口”。或者,您可以使用 “sudo gdmsetup” 命令)。单击 “远程” 选项卡,然后在 “样式” 中,选择 “与本地相同”。然后单击底部的 “配置 XDMCP” 按钮以验证设置。如果您在样式中选择 “禁用远程登录”,它将禁用 XDMCP。其他设置在 “安全” 选项卡和下方的 “配置 X 服务器...” 按钮中,并在服务器中选择 “Chooser”。您必须重新启动 gdm 才能启用它!这样做既快速又简单,但您会失去对正在触摸和更改的文件的感知!易用性或可控性是您在此处的选择!)

  5. (对于 Ubuntu 和新的 Debian,请参阅以下注释)现在编辑/etc/inittab并更改以下行。此处的数字表示默认运行级别。对于 X,运行级别应为 “5”。

    id:3:initdefault:

    改为

    id:5:initdefault:

    在 Slackware 中,X11 模式是数字 “4”,而不是 “5”。有关不同发行版的定义,请参阅此 运行级别 wiki 页面

    这是从文本模式登录切换到使用显示管理器的图形模式。在更改此行之前,您可以使用 telinit 命令在修改该行之前进行测试。使用 telinit 3 设置为级别 3,或使用 telinit 5 设置为级别 5,图形模式(您可以在 telnet 连接到此服务器的第二台计算机上发出此命令)。

    在 Debian 和 Ubuntu 中,运行级别 2-5 是相同的。自 Ubuntu 6.10(以及未来的 Debian)以来,启动运行级别的方式从 init 守护程序更改为 Upstart,通过 Upstart,任务和服务由事件管理。每个运行级别都由系统中格式为/etc/rcx.d的文件定义,其中 “x” 代表。每个事件都通过发出 telinit 3 命令触发(或更改)。

  6. 确保文件/etc/X11/xdm/Xservers的正确安全性设置为 444 (chmod 444)。

  7. 找到/etc/X11/xdm/Xsetup_0并将此文件 chmod 755

  8. 编辑xorg.conf文件,该文件位于/etc/X11文件夹中,并更改该行(对于旧版本,它是XF86ConfigXF86Config-4文件,用于 XFree86 4.x)

    FontPath    "unix/:-1"

    改为

    FontPath    "unix/:7100"

    如果您决定使用端口号而不是常用的 7100,请务必在 “/etc/rc.d/init.d/xfs”(或 “/etc/init.d/xfs”)文件和此处都进行更改!

    为了节省您的时间和精力,我建议您在 xorg.conf(或 XF86Config 和/或 XF86Config-4)配置文件中添加 FontPath。如果您不确定可以使用哪些字体,可以使用此命令进行检查(需要 root 权限)

    chkfontpath --list

    以下是一些示例字体供您参考。在编辑这些路径之前,请确保您拥有这些字体。

             FontPath  "/usr/X11R6/lib/X11/fonts/75dpi/"
             FontPath  "/usr/X11R6/lib/X11/fonts/misc/"
             FontPath  "/usr/X11R6/lib/X11/fonts/CID/"
             FontPath  "/usr/X11R6/lib/X11/fonts/Speedo/"
             FontPath  "/usr/X11R6/lib/X11/fonts/100dpi/"
    	 FontPath  "/usr/X11R6/lib/X11/fonts/Type1/"
         

    如果您没有 chkfontpath 命令并且您正在使用本地字体,则可以简单地编辑文件 “/etc/X11/fs/config”。找到以 “catalog=” 开头的行,并在列表末尾添加您的目录,用逗号分隔。一个例子是这样的

         catalogue = /usr/X11R6/lib/X11/fonts/misc:unscaled,
                     /usr/X11R6/lib/X11/fonts/100dpi:unscaled,
                     /usr/X11R6/lib/X11/fonts/100dpi,
                     /usr/X11R6/lib/X11/fonts/75dpi
         
  9. (您 不必 进行此更改。您可以保留默认设置,但这是我首选的设置。如果您不确定,请保持原样。)将此行更改为末尾/etc/inittab:

    x:5:respawn:/usr/bin/gdm

    如果您决定不更改此行,那也没关系!这不是必需的步骤,而是个人偏好!在 Ubuntu 和较新的 Debian 发行版中无需执行此操作。

您现在可以准备运行测试了。

另一个需要了解的事项(一些用户已经询问过)是如何显示带有负载信息的 Willing to manage 消息。据我所知,这在 xdm 中可以通过将以下内容添加到/etc/X11/xdm/xdm-config.

DisplayManager.willing:  su noboby -c /etc/X11/xdm/Xwilling
来实现,并且 XWilling 脚本必须存在。对于 gdm,将此行添加到/etc/X11/gdm/gdm.conf中的[security]部分
Willing=/etc/X11/gdm/Xwilling

此处提供了一个 Xwilling 脚本 示例供您参考。是否添加此脚本取决于您的偏好。这不是必需的步骤!


2.7. 测试

要测试您的 XDMCP 和 X 服务器是否已准备好接受连接,请执行以下步骤。我发现使用 X 服务器和另一台计算机进行测试更容易

  1. (重新)启动您的 X(它在运行级别 5 或 Ubuntu 中的运行级别 2 中)。如果您不确定如何执行此操作,只需重新启动系统即可(但如果您知道如何使用命令行重新启动它,则实际上没有必要。这就是 Linux 的魅力所在,与 MS Windows 相比)。

  2. 如果您尚未修改防火墙规则,则需要使用 iptables -F(或 ipchains -F)临时禁用它。

  3. 确保出现图形登录页面。确保显示分辨率和鼠标工作正常。从控制台登录以查看本地访问是否正常。如果正常,请不要注销。

  4. 设置 Hummingbird Exceed(或其他 X 客户端软件)以查询此计算机(使用 IP 地址或完全限定的 DNS 名称)或设置为使用 XDMCP-Broadcast 并尝试连接到 X 服务器。您应该看到 X 会话启动并且出现登录屏幕。


3. 使用 SSH 的 X11 转发

正如我之前解释的那样,由于 XDMCP 缺乏跨互联网的加密,因此使用 XDMCP 在互联网上显示 X 基本上是不可行的。强制执行流量安全性的一种方法是通过 X11 隧道或端口转发的方式使用 SSH。SSH(安全外壳)由 Tatu Ylonen 于 1995 年开发,旨在取代不安全的 telnet、ftp、scp、rcp、rlogin、rsh 等。您需要了解的第一件事是使用 SSH 的 X11 转发与您运行 X Window 的常规、非安全方式不同。

要开始此设置,您需要额外的信息。首先,您必须安装 SSH 软件包。在 Linux 中,它们是 OpenSSH 软件包。检查您的发行版以确定您需要安装哪个软件包(某些发行版将其作为标准软件包安装)。其次,您需要 Windows SSH 客户端(其他操作系统版本,如 MAC,也可用)。我推荐 PuTTY。它是一个出色的免费 SSH 客户端,您可以从 此链接 下载它们。请记住下载文档并仔细阅读。其他好的免费 SSH 客户端包括:Tera Term Pro + TTSSH:Tera Term 的 SSH 扩展,SSH.com 的 SSH Secure Shell Client(仅免费用于非商业用途)。我将再次将其分解为步骤,以便您轻松遵循。

  1. 双击打开命令 putty.exe。这将弹出界面。首先,在主机名(或使用 IP)字段中设置连接信息,然后选择 SSH(SSH 使用端口 22)。在 “连接” 类别中,找到 “连接” 树。在 “SSH” 中,展开它,您将看到 “隧道” 窗口。单击 “启用 X11 转发”。它将默认设置为 “localhost:0” 上的 X 显示。现在,返回 “会话” 并使用您喜欢的名称保存此会话。我通常使用主机名,以便我轻松记住我要连接到哪里。

  2. 在 Hummingbird Exceed 的示例中,这是您需要执行的操作。(对于其他 X 客户端,设置类似)。从您的 Exceed 文件夹中打开 Xconfig。在您的 “屏幕定义” 中,更改为 “多窗口” 模式并保存。接下来,打开您的 “通信” 图标,并将 “启动模式” 设置为 “被动”。

  3. 现在你已经完成了。为了测试它,首先使用 PuTTY (或其他 SSH 客户端) 连接到你的服务器。首次连接时,它会询问你是否要缓存安全密钥。(选择“是”是正常选择)。一旦登录完成,启动你的 Exceed。它将在后台运行。现在你可以执行任何 X 应用程序,它应该通过 SSH 将 X 应用程序转发到你的本地屏幕。例如

    $ xclock &

    现在你应该看到 Xclock 正在你的本地屏幕上运行。

现在你看到不同之处在于你没有看到所有的 X Window。你只是逐个运行 X 应用程序,并通过 SSH 转发到你的本地屏幕。因此,你需要知道运行每个 X 应用程序的命令。所有的控制都通过 SSH 客户端窗口完成。对我来说,安全比轻微的不便更值得!

Hummingbird Exceed 的较新版本现在支持 SSH 连接。我相信其他 X 应用程序也可能在其最新的新版本中做到这一点。查看你正在使用的应用程序网站或下面的 参考资料 以获取更多详细信息。

如果你正在使用 X-Win32 并且想要使用 SSH 端口转发,你可以使用此参考资料进行设置。


4. 故障排除


5. XDMCP 和 GDM (Gnome 显示管理器)

以下内容摘自 Gnome 显示管理器参考手册

GDM 还支持 X 显示管理器协议 (XDMCP) 以管理远程显示。GDM 监听 UDP 端口 177,并将通过向发起者发送 WILLING 数据包来响应 QUERY 和 BROADCAST_QUERY 请求。GDM 也可以配置为接受 INDIRECT 查询,并向远程显示呈现主机选择器。GDM 将记住用户的选择,并将后续请求转发到所选管理器。GDM 仅支持 MIT-MAGIC-COOKIE-1 身份验证系统。从其他方案中获得的收益很少,到目前为止还没有努力实现它们。由于很容易对 XDMCP 服务进行拒绝服务攻击,GDM 包含一些功能来防御攻击。请阅读下面的 XDMCP 参考部分以获取更多信息。

即使 GDM 试图胜过潜在的攻击者,仍然建议你阻止防火墙上的 UDP 端口 177,除非你真的需要它。GDM 防御 DoS 攻击,但 X 协议本质上仍然是不安全的,只应在受控环境中使用。即使你的显示器受到 cookie 的保护,XEvents 以及输入密码时键入的击键仍将以明文形式在线上传输。捕获这些内容是很容易的。你也应该意识到,如果 cookie 放在 NFS 挂载的目录中,也很容易被窃听。


6. 附加参考资料

关于此主题的一些附加参考资料包括


7. 作者

当前作者:Thomas Chao, Alcatel-Lucent。


8. 版权信息

本文档版权归 Thomas Chao 所有 (c) 2000 - 2007,并根据以下 Linux 文档项目 (LDP) 许可条款分发。

除非另有说明,否则 Linux HOWTO 文档的版权归其各自作者所有。Linux HOWTO 文档可以完整或部分地以任何物理或电子媒介复制和分发,只要所有副本都保留此版权声明。允许并鼓励商业再分发;但是,作者希望收到任何此类分发的通知。

所有翻译、衍生作品或包含任何 Linux HOWTO 文档的聚合作品都必须受此版权声明的约束。也就是说,你不得从 HOWTO 生成衍生作品并对其分发施加额外限制。在某些条件下可以授予对这些规则的例外;请通过以下地址联系 Linux HOWTO 协调员。

简而言之,我们希望通过尽可能多的渠道促进此信息的传播。但是,我们确实希望保留 HOWTO 文档的版权,并希望收到任何再分发 HOWTO 的计划的通知。

如果你有任何问题,请联系