如何在WSL2上设置工作的X11转发

185

当从WSL1迁移到WSL2时,许多事情都会发生变化;显然,这也适用于X11转发。


我需要采取哪些步骤才能像在WSL1上一样在Windows 10上使用WSL2进行X11转发?


4
程序员常用的工具,需要一定的常识。众所周知,并非所有与 WSL2 相关的问题都适合在此讨论,本应永远不应该重新开放这个问题。我们有其他的网站可以讨论此类问题,例如 Super User 更加适合。甚至可能适合于 Ask Ubuntu(假设涉及发行版)或 Unix & Linux Stack。但是,这不是一个关于“特定编码、算法或语言问题”的问题。 - NotTheDr01ds
这个答案帮了我 - https://dev59.com/5lEG5IYBdhLWcg3wY8My - nycynik
1
我强烈建议非程序员甚至意识到WSL是罕见的。X11转发不是主题,但对于要转发的工具的资格(比如证书工具)是有资格的。说一个真正的程序员会依赖命令行是无稽之谈,但也承认这是一个VirtualBox场景是有效的。有解决方法。 - mckenzm
23个回答

-1
以下解决方法对我有效:
Set-NetFirewallProfile -Name $(Get-NetConnectionProfile).NetworkCategory -DisabledInterfaceAliases $(Get-NetAdapter | Where-Object Name -like 'WSL').Name

2
你正在完全禁用wsl网络适配器的防火墙。这是一种安全风险,应该避免。 - whme

-1
我的错误在于我使用了我的Linux WSL2实例的名称服务器,而我的XServer运行在Windows上。因此,DISPLAY变量必须设置为我的Windows IPv4地址。只需在PowerShell或CMD中键入ipconfig并使用ipv4以太网地址即可。

-1

我已经成功使用 Windows 主机的 LAN 适配器 IP,与开箱即用的 VcXsrv 防火墙配置(即无需覆盖/禁用任何防火墙规则)进行了协作。将以下内容添加到我的 ~/.bash_aliases 文件中:

export DISPLAY=$(pwsh.exe -c ipconfig | grep -A 3 lan | grep IPv4 | head -1 | awk '{ print $NF }'):0

这里的lan是我的连接特定的 DNS 后缀(你的可能不同,在这种情况下,你应该在上面的命令行中替换它)。


1
.bash_aliases 应该用于别名,而不是导出变量。 而且你在从wsl2启动Windows命令来获取ipconfig的输出,将其传递给2个grep、一个head和一个awk...并且每次你打开一个shell时都会这样做。 在我的笔记本电脑上,单独运行pwsh.exe需要1.125秒! - ThoSil
很遗憾,这对我来说有两个原因不起作用。 我的系统上没有pwsh.exe。 我想你是指powershell.exe或者在你的Windows系统上有一些别名。 在使用powershell.exe时,在我的系统上输出结果如下::02.168.0.5。 当然,这是不起作用的,因为这只是地址的一部分,并且字符串顺序由于某种原因被翻转了。 - D. Charles Pyle
如果你正在使用wifi,grep就必须搜索wlan。另一方面,仅设置DISPLAY仍然无法解决公共网络上防火墙默认阻止通信的问题。 - daniel.kahlenberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接