我将以下设置放入启用 SSH 的远程机器,希望我可以通过 SSH 会话启动 GUI 程序。
# These settings shall go to `/etc/ssh/sshd_config`.
X11Forwarding yes
X11UseLocalhost no
AllowAgentForwarding yes
X11DisplayOffset 10
我使用安装了 Xming 和 WSL 的 Windows 10 机器,本地。在所有本地+远程机器上,我都已export DISPLAY=0:0
在我的 中进行设置~/.bashrc
,这与本地运行的 Xming 的默认设置相匹配。
然而,它会根据主机的不同做不同的事情:
- 如果主机是一台 Linux 机器,当我使用
ssh -X user@host
连接 然后启动 时gvim
,GUI 就会被带到本地机器,一切正常; - 如果主机是运行 WSL 的 Windows 10 计算机,虽然
ssh -X user@host
可以让我访问远程计算机的命令行,gvim
但会启动 GUI 会话在远程机器上反而。- 如果我进一步关闭远程 Windows 10 计算机上的 Xming,Gvim 会抱怨它。这与尝试在远程计算机上
"cannot open display"
启动时出现的错误消息相同gvim
本地(远程桌面连接到该机器)。 - 在远程 Windows 10 机器上,我使用此命令主持人服务器:
sudo service ssh start
。
- 如果我进一步关闭远程 Windows 10 计算机上的 Xming,Gvim 会抱怨它。这与尝试在远程计算机上
问题:请告知 Windows 10 机器的正确设置,以便我可以通过 X11 连接 GUI 程序。谢谢!
更多调试信息
摘录自ssh -v -X user@remote_server
:
- 从 Linux 远程计算机:
Warning: No xauth data; using fake authentication data for X11 forwarding.
debug1: Requesting X11 forwarding with authentication spoofing.
debug1: Sending environment.
debug1: Sending env LANG = C.UTF-8
Welcome to Linux Mint 18.1 Serena (GNU/Linux 4.4.0-53-generic x86_64)
:: >>Linux-remote<< ::~>>echo $DISPLAY
localhost:12.0
经过进一步测试,当我使用 Linux 远程打开新的 SSH 会话时,这个数字会增加。
- 从 WSL-Windows-10 远程计算机:
Warning: No xauth data; using fake authentication data for X11 forwarding.
debug1: Requesting X11 forwarding with authentication spoofing.
debug1: Sending environment.
debug1: Sending env LANG = C.UTF-8
Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.4.0-17763-Microsoft x86_64)
:: >>WIn-WSL-Machine<< ::~>>echo $DISPLAY
0:0
$DISPLAY
与远程 WSL-Windows 机器的 SSH 会话中反复“回显”一直显示相同的内容0:0
。
PS:我一直在同一台本地机器上测试 X-forwaring,Xming 服务器在本地端口上运行0:0
。这样的 Xming 服务器一直很乐意容纳来自其“本地”Windows WSL shell/系统以及 Linux 机器的 GUI。现在令我烦恼的是,远程 Linux 机器应该使用端口localhost:12.0
答案1
我遇到了同样的问题,我通过在 WSL 中设置“DISPLAY=localhost:0.0”而不是“DISPLAY=:0.0”解决了该问题。请参阅, https://unix.stackexchange.com/questions/57138/why-does-my-x11-forwarding-attempt-fail-with-connect-tmp-x11-unix-x0-no-such
答案2
我见过很多使用的例子resolv.conf
,但对我来说它不起作用。
我将DISPLAY
其设置为.bashrc
asexport DISPLAY="$(/sbin/ip route | awk '/default/ { print $3 }'):0"
并且它运行完美。
我现在还可以获得彩色的 x11 应用程序:已解决:WSL/ubuntu 中的 x11 应用程序只有黑白两色
请注意这是与 WSL 2 相关的,WSL 1 可能有所不同。