Cygwin ssh 未正确设置显示(额外:0)
Cygwin ssh not setting DISPLAY correctly (extra :0)
我在 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
如果我现在尝试启动任何 windowed 进程,我会收到一条错误消息:
> 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)然后这个确实解决了这个问题,并且window转发工作正常。
所以问题是:如何修复以便我不需要在每次连接时手动更改 DISPLAY 变量?
误报,让我很尴尬。结果我的 .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 分支就解决了问题。愿这对我们所有人来说都是一个教训,让我们知道在不知道其中包含什么的情况下复制别人的配置的危险。
我在 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
如果我现在尝试启动任何 windowed 进程,我会收到一条错误消息:
> 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)然后这个确实解决了这个问题,并且window转发工作正常。
所以问题是:如何修复以便我不需要在每次连接时手动更改 DISPLAY 变量?
误报,让我很尴尬。结果我的 .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 分支就解决了问题。愿这对我们所有人来说都是一个教训,让我们知道在不知道其中包含什么的情况下复制别人的配置的危险。