我在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变量?
答案 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分支解决了这个问题。对于我们所有人来说,复制别人的配置而不知道它包含什么的危险,这可能是一个教训。