Cygwin ssh没有正确设置DISPLAY(额外:0)

时间:2017-05-04 15:38:58

标签: ssh cygwin x11 xterm

我在Windows 7上使用Cygwin通过SSH连接到unix(RHEL 6)服务器。当我这样做时,X转发没有正确设置:

(从Windows机器上的Cygwin xterm开始)

> echo $DISPLAY
:0
> ssh -Y myname@rhel.server.com
[enter password]
> echo $DISPLAY
localhost:52.0:0

如果我现在尝试启动任何窗口化过程,我会收到一条错误消息:

> emacs
emacs: Cannot connect to X server localhost:52.0:0.
Check the DISPLAY environment variable or use '-d'.
Also use the 'xhost' program to verify that it is set to permit connections from your machine.

其他详细信息

随后的数字' localhost' (每个例子中的52个)每次连接时都不同。

如果我执行以下操作,

> export DISPLAY=localhost:52.0

(也就是说,我删除了尾随":0)然后这个 DOES 解决了这个问题,窗口转发工作正常。

所以问题是:如何修复以便我不需要为每个连接手动更改DISPLAY变量?

1 个答案:

答案 0 :(得分:0)

误报,这让我很尴尬。事实证明我的.profile(我从其他人那里借来的,因为它包含了大量有用的我们开发环境的定制)包含这些内容:

export DISPLAY
if [[ -z $DISPLAY ]]; then
    DISPLAY=my.machine.addr:0
elif echo $DISPLAY | grep -z -v ':0'; then
    DISPLAY=$DISPLAY:0
fi

瞧,评论出来的elif分支解决了这个问题。对于我们所有人来说,复制别人的配置而不知道它包含什么的危险,这可能是一个教训。