Putty X11 转发,有些功能无法正常工作

Putty X11 转发,有些功能无法正常工作

我安装了 PuTTY,可以成功登录远程主机。我在运行 PuTTY 的同一台主机上还安装了 Xming。远程主机运行的是 Ubuntu 12.04,默认情况下,文件中localhost设置为。当我登录时,变量正确设置为,但由于某种原因,X 应用程序无法打开显示:127.0.1.1/etc/hostsDISPLAYlocalhost:10.0

[user@host ~]$ xeyes
Error: Can't open display: localhost:10.0

但是,如果我将DISPLAY变量设置为127.0.0.1:10.0,则 X11 会成功转发到 Xming。如果我localhost在 Ubuntu 框上将其更改为127.0.0.1,则可以正常工作,但其他应用程序突然变得非常慢,即使重新启动后也是如此。所以这对我来说不是一个解决方案。

我想知道的是,监听 127.0.0.1 而不是 127.0.1.1 的是什么?是 X 吗?还是 SSH?我怎样才能强制解析它,localhost/etc/hosts不是假设它是127.0.0.1?根据维基百科,应用程序可以做出这样的假设,但在我的特定情况下,这给我带来了问题!或者,我如何自定义变量以便在登录时DISPLAY自动设置为?127.0.0.1:10.0

答案1

在您的 .bashrc / .bash_aliases 中创建一个别名(取决于您的登录资源文件的设置方式):

alias x='export DISPLAY="127.0.0.1:$(echo $DISPLAY | sed '"'"'s/.*:\(.*\)/\1/'"'"')"'

然后输入x登录。

(请注意,这处理了这样一个事实:对于向远程主机上的 SSHD 发出的每个新的 X 转发请求,分配给您的 X 会话的编号都会递增,因此可能为:10.0 或者可能是:11.0 等)。

您可以将导出命令放在您的.login,但这会影响全部登录不仅仅是由 putty 制作的登录。

编辑:OP 询问了为什么这样做有效。我假设您的环回设备上有一个 127.0.1.1 地址的别名,并且标准环回地址是主接口地址(anifconfig可以证实这一点)。大多数环回设备默认为 127.0.0.0/8 网段,因此将设置路由以通过 lo 设备指向该 /8:

127.0.0.0/8 dev lo  scope link 

localhost(正如您已经指出的那样)通过您的 IP/etc/hosts地址进行解析,并指向 127.0.1.1 地址,因此这是大多数服务将使用的 IP。您可能能够将其更改为解析为 127.0.0.1,但这可能还涉及在netstat -an您在 hosts 文件中更改它之后重新启动所有使用 127.0.1.1 地址的服务(将显示这些服务)。

相关内容