修订历史 | ||
---|---|---|
修订版 v1.4 | 2007年6月11日 | |
添加了关于现在流行的 Ubuntu 7.0.4、RH Commercial Workstation v.3、Fedora Core 6 和 7、新的 Mandriva 的信息。 | ||
修订版 v1.3 | 2003年1月2日 | |
添加了关于 Red Hat 7.3 & 8.0、Mandrake 8.2 & 9.0、SuSE Linux 配置和内容更新的信息。 | ||
修订版 v1.2 | 2002年3月15日 | |
添加了更多关于 Red Hat 7.2、Mandrake 8.1 和 Slackware 8.0 Linux 配置以及 SSH X11 转发的信息。 | ||
修订版 v1.1 | 2001年3月20日 | |
修订并添加了 RH 7.0。 | ||
修订版 v1.0 | 2000年11月01日 | |
初始修订和发布。 |
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 变得越来越容易使用。但是,我仍然非常相信在可能的情况下手动控制系统和应用程序,因为这样,我就知道我将在我的系统中以我想要的方式更改什么。因此,我将本文档的重点放在手动配置上。
本节详细介绍了使用 XDMCP 设置 X 终端的步骤。先决条件是已安装并运行 X 的(任何)Linux 发行版。
在开始之前,最好对它的工作原理有一个基本的了解。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.conf。gdm.conf文件包含变量集和 gdm 的许多选项,Sessions 目录包含每个会话选项的脚本;每个脚本都调用/etc/X11/xdm/Xsession以及相应的选项。gdm 具有与 xdm 和 kdm 类似的功能,但它是从头开始编写的,不包含任何原始的 XDM / X Consortium 代码。
RH 8.0 引入了名为 "Bluecurve" 的新图形界面。新界面的目标是 XP 的感觉和风格。在这种情况下,设置没有区别!
有关类似设置的其他良好参考资料可以在以下文档中找到
Kevin Taylor 的 XDM 和 Xterminal mini-HOWTO
Linux 远程 X 应用程序 mini HOWTO,从理论和实践角度来看,这是一个非常好的远程 X 参考资料。Vincent Zweije 著
Salvador J. Peralta 的 连接 Xterminal mini-HOWTO
来自 GNOME 项目的 使用和管理 GDM [PDF]。
不要相信 Linux(或 UNIX)比 MS Windows 更安全的说法!如果用户配置工作做得不好或没有维护安全更新,所有操作系统都容易受到黑客攻击!
您需要记住,X 和 XDMCP 本质上都是不安全的,这就是为什么许多发行版默认情况下都关闭了 XDMCP。如果您必须使用 XDMCP,请务必仅在受信任的网络中使用它,例如防火墙内的公司网络。切勿在没有防火墙保护的开放网络(或互联网)环境中使用它!如果您在家中使用,请记住添加配备防火墙的路由器以进行保护。
测试网络安全性的一个好方法是使用 Gibson Research 的 ShieldsUp 进行测试。它是免费且易于使用的!
XDMCP 连接打开 UDP 端口;因此,它本身无法与 SSH 一起使用。目前,SSH1 和 SSH2 尚未实现安全地转发 UDP 通信。为了使用 SSH 保护连接,该技术称为 X11 TCP/IP 端口转发。查看 为什么需要端口转发? 站点和 资源 区域,以获取更多 HOW-TO 信息。如果您想尝试一下,我在下面添加了一个小节来向您展示它的工作原理。我将仅向您介绍其工作原理的基本概念,更高级的运行方式将留给其他专家和/或 HOWTO。
我已经在以下发行版上测试了运行 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。
我在我的 PC 上使用了 Hummingbird Exceed 10.0(Exceed 6.x 和 7.0 也工作良好),并在 Windows NT 4.0、Windows 2000 Pro、Windows XP 上进行了测试。我发现其他流行的选择是 X-Win32 和 X-ThinPro,但我没有机会测试它们。如果您碰巧有开源应用程序以及商业应用程序,也有很多可用的。
在 RH 7.x 和其他较新的发行版中,您需要设置 DNS 查找,以便某些网络功能能够正常工作(例如我们将用于测试设置的 telnet)。您可以使用 “netstat -r” 和/或 “arp -a” 命令来验证您的 DNS 设置或响应时间。如果您处于小型环境(如家庭或小型办公室),没有自己的 DNS 并且依赖于您的 ISP 的 DNS 服务器,则在 “/etc/resolv.conf” 文件中添加您的 Linux 工作站或服务器名称的条目。如果您仅在实验室或家庭中使用它,那么您可以将所有工作站的主机名添加到 “/etc/host” 中的本地静态主机表中。您需要 root 权限才能更新命名信息。
要为 XDMCP 会话准备您的 X 服务器,您需要确保正确安装了以下内容
安装您的 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。
设置您的网络。要进行测试,您可以使用 ping、ftp 和 telnet 命令来确定您的网络是否正常工作。RH 7.x 及更高版本默认情况下未启用 telnet 守护程序(出于安全原因)。如果您希望使用它进行测试,请记住启用它。您始终可以在完成后将其关闭(在 RH 中使用 ntsysv,或在 Ubuntu 和 Debian 中使用 rcconf、sysvconfig,并具有 root 权限)。另一件事是要记住防火墙规则在那里。添加您自己的规则或临时禁用它(如上所述)以使这些命令起作用。
设置 X。不要设置高于远程用户显示器能够使用的分辨率。较新的版本现在能够探测视频芯片组并为您确定这一点。一些较旧的 (X) 版本可能无法做到!通过键入 startx 或 telinit 5 来测试 X 服务器。确保 X 正常运行。
为将通过 X 终端访问的用户创建必要的用户帐户(和关联组)。
虽然 X 可以使用本地字体,但在网络环境中最好使用 xfs 字体服务器。如果这是您在 Linux X 环境中想要的,则需要使用 X 字体服务器 (xfs) 或 XF86Config 和 XF86Config-4 配置文件中的硬编码字体路径来提供字体。如果您计划使用 xfs 字体服务器(在此处查看 xfs 优势)。xfs 服务器还可以减轻本地工作站的负担。如果您计划使用本地字体,则可以跳过步骤 1。
这些是我用于设置 X 服务器以接受 XDMCP 请求的步骤
在早期版本的 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 下的不同文件夹中。如果是这种情况,您可以搜索它。
如果您计划使用 XDM,请修改/etc/X11/xdm/xdm-config并进行以下更改。默认情况下(在大多数 Linux 发行版中),设置了此行,因此它不侦听 XDMCP 连接。这是出于安全原因。对于 Caldera 和其他使用 kdm 的发行版,此文件位于/etc/X11/kdm。找到此行
DisplayManager.requestPort: 0 |
并将其注释掉,如下所示
! DisplayManager.requestPort: 0 |
请记住,这不会影响 gdm。有关 gdm 设置,请参阅以下部分。
在/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 部分。示例可以在 资源 中找到。
如果您计划使用 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 才能启用它!这样做既快速又简单,但您会失去对正在触摸和更改的文件的感知!易用性或可控性是您在此处的选择!)
(对于 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 命令触发(或更改)。
确保文件/etc/X11/xdm/Xservers的正确安全性设置为 444 (chmod 444)。
找到/etc/X11/xdm/Xsetup_0并将此文件 chmod 755。
编辑xorg.conf文件,该文件位于/etc/X11文件夹中,并更改该行(对于旧版本,它是XF86Config或XF86Config-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 |
(您 不必 进行此更改。您可以保留默认设置,但这是我首选的设置。如果您不确定,请保持原样。)将此行更改为末尾/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 |
Willing=/etc/X11/gdm/Xwilling |
此处提供了一个 Xwilling 脚本 示例供您参考。是否添加此脚本取决于您的偏好。这不是必需的步骤!
要测试您的 XDMCP 和 X 服务器是否已准备好接受连接,请执行以下步骤。我发现使用 X 服务器和另一台计算机进行测试更容易
(重新)启动您的 X(它在运行级别 5 或 Ubuntu 中的运行级别 2 中)。如果您不确定如何执行此操作,只需重新启动系统即可(但如果您知道如何使用命令行重新启动它,则实际上没有必要。这就是 Linux 的魅力所在,与 MS Windows 相比)。
如果您尚未修改防火墙规则,则需要使用 iptables -F(或 ipchains -F)临时禁用它。
确保出现图形登录页面。确保显示分辨率和鼠标工作正常。从控制台登录以查看本地访问是否正常。如果正常,请不要注销。
设置 Hummingbird Exceed(或其他 X 客户端软件)以查询此计算机(使用 IP 地址或完全限定的 DNS 名称)或设置为使用 XDMCP-Broadcast 并尝试连接到 X 服务器。您应该看到 X 会话启动并且出现登录屏幕。
正如我之前解释的那样,由于 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(仅免费用于非商业用途)。我将再次将其分解为步骤,以便您轻松遵循。
双击打开命令 putty.exe。这将弹出界面。首先,在主机名(或使用 IP)字段中设置连接信息,然后选择 SSH(SSH 使用端口 22)。在 “连接” 类别中,找到 “连接” 树。在 “SSH” 中,展开它,您将看到 “隧道” 窗口。单击 “启用 X11 转发”。它将默认设置为 “localhost:0” 上的 X 显示。现在,返回 “会话” 并使用您喜欢的名称保存此会话。我通常使用主机名,以便我轻松记住我要连接到哪里。
在 Hummingbird Exceed 的示例中,这是您需要执行的操作。(对于其他 X 客户端,设置类似)。从您的 Exceed 文件夹中打开 Xconfig。在您的 “屏幕定义” 中,更改为 “多窗口” 模式并保存。接下来,打开您的 “通信” 图标,并将 “启动模式” 设置为 “被动”。
现在你已经完成了。为了测试它,首先使用 PuTTY (或其他 SSH 客户端) 连接到你的服务器。首次连接时,它会询问你是否要缓存安全密钥。(选择“是”是正常选择)。一旦登录完成,启动你的 Exceed。它将在后台运行。现在你可以执行任何 X 应用程序,它应该通过 SSH 将 X 应用程序转发到你的本地屏幕。例如
$ xclock & |
现在你应该看到 Xclock 正在你的本地屏幕上运行。
现在你看到不同之处在于你没有看到所有的 X Window。你只是逐个运行 X 应用程序,并通过 SSH 转发到你的本地屏幕。因此,你需要知道运行每个 X 应用程序的命令。所有的控制都通过 SSH 客户端窗口完成。对我来说,安全比轻微的不便更值得!
Hummingbird Exceed 的较新版本现在支持 SSH 连接。我相信其他 X 应用程序也可能在其最新的新版本中做到这一点。查看你正在使用的应用程序网站或下面的 参考资料 以获取更多详细信息。
如果你正在使用 X-Win32 并且想要使用 SSH 端口转发,你可以使用此参考资料进行设置。
如果 X 无法启动并崩溃
如果 X 崩溃且连接失败,大多数时候会出现以下错误消息
_ FontTransSocketUNIXConnect: Can't connect: errno = 111 failed to set dafault font path 'unix:-1' Fatal server error: could not open default font 'fixed' |
这可能是由于 xfs 找不到字体服务器的正确端口,或者字体路径设置不正确!要解决此问题,请检查上面的步骤 1 和 8。确保配置指向端口 7100,并确保你已安装以下字体(如果未安装,请从你的 CD 重新安装 XFree86 字体包)。查看以下文件中的列表XF86Config文件 (如果你正在使用 XFree86 4.x,则文件是XF86Config-4和xorg.conf在较新的 X11 版本中) 位于/etc/X11:
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/" |
使用命令 startx (在本地) 重新启动 X 服务器 (或使用 telinit 5 切换运行级别)。要重新启动 xfs,请使用步骤 1 中的命令。
我发现在我的 RH 7.3 中,如果我的 xfs 未设置,当我使用 GNOME 时,它会使 Exceed 连接崩溃。(使用 KDE 没问题,并且不影响我的 Mandrake GNOME)。在我修复它并启动我的 xfs 后,它工作正常。
如果 Exceed 没有响应 (空白屏幕)
在这种情况下,很可能是你的 xdm (或 gdm,取决于在/etc/inittab) 没有正确启动。执行命令:ps -ef | grep gdm (或 xdm 或 kdm,在命令中替换它)。此外,如果你的机器的 udp 端口为 XDMCP 启用,你可以输入 netstat -l | grep xdmcp,你应该看到这个
udp 0 0 *:xdmcp *:* |
如果该进程未运行,请检查上面设置中的步骤 (确保没有拼写错误并且给出了正确的路径)。使用命令 telinit 5 重新启动 X。如果 XDMCP 的 udp 端口不存在,请执行如上步骤 2。
另一种可能性是你的 DNS 设置不正确和/或防火墙已启用。一个简单的找出方法是简单地 ping 或 telnet 你的主机,如果回复时间很长,那么就是 DNS 问题。如果通过使用 telnet 你得到一个 "连接被拒绝",那么这是一个防火墙问题 (假设你已经打开了 telnet 守护进程)!查看上面部分了解如何解决此问题。
使用 PPPoE (以太网上的 PPP) 的 PC 机
一位使用 PPPoE 的用户告诉我,如果你有 PPPoE,你可能会在使用 XDMCP 时遇到问题。卸载它之后,他就能够使 XDMCP 工作。我个人没有环境来测试这个,所以你可以自己测试一下。
Linux 到 Linux 显示导出
如果你正在使用另一个带有 X 的 Linux,你不需要使用 XDMCP 来管理你的显示。你实际上可以直接从你的 X 机器导出你的显示。要做到这一点,你必须启用你的访问控制,以允许其他人连接到 X 服务器。不这样做你会得到的常见错误是
xlib: Connection refused (error 111): unable to connect to X server xlib: No such process (error 3): Server error |
要解决此问题,请使用以下命令
$ xhost + $ export DISPLAY=(your local host IP):0.0 |
始终记住使用命令 "xhost -" 再次。有一件事要提醒你,如果你正在使用 PC 作为使用 XDMCP 的 X 终端,则不需要这样做。这仅在你有 Linux 到 Linux 或 Linux 到 UNIX 连接时才需要。
如果你正在使用许多 Linux X 机器,并且你想设置选择器以选择从哪个 X 登录,你需要在以下位置启用以下内容/etc/X11/gdm/gdm.conf:
[daemon] Chooser=/usr/bin/gdmchooser --disable-sound --disable-crash-dialog ... [xdmcp] Enable=1 HonorIndirect=1 |
我收到一个 "Signal 11" 错误
"Signal 11" 错误,也称为 "Segmentation Fault" (段错误),有时可能是你的硬件和/或软件的问题。如果你在启动 X 服务器时遇到此问题,你需要在配置 XDMCP 之前解决它。不幸的是,由于可能的原因很多,没有简单的方法来解决这个问题。有关详细信息,请查看 编译内核时出现 SIG 11。
以下内容摘自 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 挂载的目录中,也很容易被窃听。
关于此主题的一些附加参考资料包括
你的本地 xdm 手册页。
你的本地 gdm 手册页。
XDMCP 文档 (压缩的 PostScript 文件下载)
保护系统上的服务 (Debian)
使用 KDM 的远程 X (Caldera)
本文档版权归 Thomas Chao 所有 (c) 2000 - 2007,并根据以下 Linux 文档项目 (LDP) 许可条款分发。
除非另有说明,否则 Linux HOWTO 文档的版权归其各自作者所有。Linux HOWTO 文档可以完整或部分地以任何物理或电子媒介复制和分发,只要所有副本都保留此版权声明。允许并鼓励商业再分发;但是,作者希望收到任何此类分发的通知。
所有翻译、衍生作品或包含任何 Linux HOWTO 文档的聚合作品都必须受此版权声明的约束。也就是说,你不得从 HOWTO 生成衍生作品并对其分发施加额外限制。在某些条件下可以授予对这些规则的例外;请通过以下地址联系 Linux HOWTO 协调员。
简而言之,我们希望通过尽可能多的渠道促进此信息的传播。但是,我们确实希望保留 HOWTO 文档的版权,并希望收到任何再分发 HOWTO 的计划的通知。
如果你有任何问题,请联系<linux-howto@metalab.unc.edu>