我有以下设置:机器 A(a.corp,192.168.100.130,本地机器)和机器 B(b.corp,远程机器),并且显示器连接到每个这些机器。当我从 a.corp ssh 到 b.corp 时,
机器A,本地机器,即a.corp设置:
.ssh/config
Host *
ForwardX11 yes
TCPKeepAlive no
ServerAliveInterval 15
ServerAliveCountMax 10
IdentityFile ~/.ssh/id_dsa.work
/etc/ssh_config
(它是 OS-x,Darwin 12.2.0)
Host *
SendEnv LANG LC_*
ForwardX11 yes
MachineB,远程机器,即b.corp设置:(ubuntu内核:3.2.0)
.ssh/config
Host *
ForwardX11 yes
IdentityFile ~/.ssh/id_dsa.work
/etc/ssh/ssh_config
Host *
SendEnv LANG LC_*
ForwardX11 yes
情况1:
(DISPLAY on a.corp is not set)
$ echo $DISPLAY
$ ssh -X b.corp
(DISPLAY on b.corp is not set either)
$ echo $DISPLAY
$ xclock
Error: Can't open display:
案例 2:我尝试将 DISPLAY 变量设置为
(DISPLAY on a.corp is not set)
$ echo $DISPLAY
$ ssh -X b.corp
$ export DISPLAY=`echo $SSH_CLIENT|cut -f1 -d\ `:0.0
$ echo $DISPLAY
192.168.100.130:0.0
$ xclock
xclock 的显示打开了,但显示在连接到 b.corp(远程计算机)的显示器上,而不是连接到 a.corp(本地计算机)的显示器上。有没有办法强制显示出现在本地计算机(a.corp)的显示器上?
答案1
通常情况下,DISPLAY
必须设置为localhost:10.0
在远程机器上/etc/ssh/ssh_config
你 还应该确保偏僻的机器有线
ForwardX11 Yes
根据部分
Host *
或者
Host a.corp
如果您只想允许 X11 转发到该主机。
答案2
尝试不使用 xauth 进行连接:
客户端@home:ssh 服务器 -Y xeyes
如果这有效,那么您必须研究正确设置 x11 安全性。