我有一台笔记本电脑和一台服务器。在同一个局域网上,我可以通过以下方式使用 X11 转发 ssh 到服务器:
ssh-Y-C 复制代码[电子邮件保护]
当我执行任何打开 x11 窗口的操作时,一切都会正常。例如 xterm 和 chromium-browser。
在我的路由器上,我将端口 22 转发到我的服务器。因此,当我在网络之外时,我可以通过以下方式成功 ssh 进入我的服务器
远程控制[电子邮件保护]
问题是当我想要 X11 转发时。当我添加标志“-Y -C”时,我仍然可以登录。但是,窗口没有转发,因为我收到以下错误:-(chromium-browser:21079):Gtk-WARNING **:无法打开显示:- xterm Xt 错误:无法打开显示:xterm:未设置 DISPLAY
我发誓这曾经有效,但出于某种原因,现在不行了。我最近能想到的唯一变化是更新服务器上的软件(10.04 更新到 10.04)。此外,在我的笔记本电脑上,我最近更新到了 ubuntu 11.04。
我认为这一定是最近出现的问题,因为我早就发现了这个问题。另外,我不记得以前打开 x11 windows 时出现过此错误。我认为这与我的笔记本电脑有关,因为当我在其他服务器(外部网络、学校)上尝试类似操作时,x11 windows 也无法打开(以前也出现过)。
我已经谷歌搜索过,但找不到任何相关内容。X11 转发必须打开,因为它在内部工作。在外部,它不起作用。请让我知道您对调试或修复的建议。
答案1
您尚未指定启用 X11 转发的实际标志,该标志是-X
. (-Y
仅将其切换到“受信任”模式。)
我的猜测是,您在一台~/.ssh/config
或/etc/ssh/ssh_config
几台机器上启用了 X11 转发,这就是为什么它可以从那里工作而无需-X
指定。
答案2
@grawity(抱歉评论太长了)
$ ssh -X -v -v -v [email protected]
OpenSSH_5.8p1 Debian-1ubuntu3, OpenSSL 0.9.8o 01 Jun 2010
debug1: Reading configuration data /home/username/.ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
debug2: fd 3 setting O_NONBLOCK
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_request_forwards: requesting forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_client_request_alive: done pid = 2616
debug3: mux_client_request_session: session request sent
debug1: mux_client_request_session: master session id: 3
$ xterm
xterm Xt error: Can't open display:
xterm: DISPLAY is not set
$ exit
logout
debug1: mux_client_request_session: master session id: 3
debug3: mux_client_read_packet: read header failed: Broken pipe
debug2: Received exit status from master 1
Shared connection to external.ip closed.
我刚刚意识到了一件事。我尝试使用 SSHFS 来处理一些服务器(挂载一些目录)。我在 ~/.ssh/config 中也有以下内容:
Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
保持单个会话处于活动状态(并继续使用它)。也许我的 SSHFS 初始会话中没有设置 X11 转发。