我可以使用以下方式登录服务器:
ssh -X Hostip
但是当我运行命令时xclock
它给了我这个错误:
Error: Can't open display: localhost:11.0
我使用以下方法检查了我的显示值:
echo $DISPLAY
结果是:
localhost:11.0
并且在 sshd_config 文件中将 X11 转发设置为 YES:
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
你对我在这里缺少什么有什么建议吗?
答案1
使用-Y
。从 ssh 的手册页:
-Y 启用可信 X11 转发。受信任的 X11 转发不受 X11 SECURITY 扩展控制的约束。
如果您仍然遇到问题,您可以尝试设置$DISPLAY
为您本地盒子的IP:
$ export DISPLAY='<ip_address>:11.0'
将其设置为
$ export DISPLAY='127.0.0.1:11.0'
人们似乎经常遇到这个问题从 Mac OS X 进行 ssh 操作。您可能还想设置
X11UseLocalhost no
在这种情况下也是如此。
答案2
这对我有用:
改变
X11UseLocalhost yes
到
X11UseLocalhost no
答案3
归功于https://unix.stackexchange.com/a/12772/61349获取他们的诊断说明。
确保您的 ssh 客户端正在请求 X11 转发-v旗帜
ssh example.com -X -v
并查找特定消息:
debug1: Requesting X11 forwarding with authentication spoofing.
另一个明显的问题迹象是缺少DISPLAY
为您设置的环境变量。如果它是空白/未设置,则有问题。至少根据上面提到的同一篇文章,这些变量是自动为您设置的。
我使用 SSH Control Master 我的 ssh 连接如下:
Host <hostname>
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
我之前的 ssh 连接没有请求 X11Firwarding,因此未来ssh
调用的选项没有被使用。所以对我来说,
ssh-X
完全被忽略了
如果您没有看到“请求 X11 转发”,但您确实看到复用器重用会话;
debug1: auto-mux: Trying existing master debug1: mux_client_request_session: master session id: 10
然后您需要退出该连接的当前 ControlMaster 并使用 -X/-Y 标志重新连接。
停止您的 ControlMaster
ssh -O check <hostname>
Master running (pid=2758)
(这将退出使用 ControlMaster 的所有活动连接)
ssh -O exit <hostname>
Exit request sent.
答案4
当尝试在 macOS 上转发到 XQuartz 时,我通过从 XQuartz 终端(通过右键单击扩展坞中的 XQuartz 图标并单击应用程序 > 终端打开)运行ssh
命令(在我的例子中)解决了该问题。ssh -Y