无法从 WSL 计算机设置 X11 转发

无法从 WSL 计算机设置 X11 转发

我将以下设置放入启用 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 机器的正确设置,以便我可以通过 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其设置为.bashrcasexport DISPLAY="$(/sbin/ip route | awk '/default/ { print $3 }'):0"并且它运行完美。

我现在还可以获得彩色的 x11 应用程序:已解决:WSL/ubuntu 中的 x11 应用程序只有黑白两色

请注意这是与 WSL 2 相关的,WSL 1 可能有所不同。

相关内容