无法在 Windows 11 上通过 SSH 运行 WSL2

Isa*_*sak 24 windows ssh macos wsl2

我有两台机器;一台台式机和一台笔记本电脑。桌面运行 WSL2 和 Windows 端的 OpenSSH 服务器。我可以从笔记本电脑连接到 SSH 服务器,没有任何问题,但无法通过 SSH 连接启动 WSL。当我运行wslbash打印以下消息时:The file cannot be accessed by the system. 请注意,我可以直接从桌面上的终端启动 WSL(但如果我从桌面通过 SSH 进入桌面则不能)。

这太奇怪了,我不知道可能出了什么问题。我曾尝试寻找类似的问题,但没有找到任何东西。

Not*_*1ds 27

简短回答:现在(大部分)已在 WSL 2.0.0 预发布应用程序中修复此问题。

背景

这是作为 Windows 功能提供的原始 WSL1 和 WSL2 中的功能。

然后当 WSL 作为应用程序可用时,它就不起作用了。

现在,可以再次从 WSL 2.0.0 预发布版开始。

更新至 2.0.0 预发行版

如果您想更新,请首先确保您使用的是最新版本的 WSL。来自 PowerShell:

wsl --version
Run Code Online (Sandbox Code Playgroud)

如果它返回版本信息,那么你就可以开始了。如果没有,您需要从Microsoft Store安装 WSL 。

接下来,运行:

wsl --update --pre-release
Run Code Online (Sandbox Code Playgroud)

更新后,建议重新启动。

在 2.0.0 中通过 SSH 运行 WSL

目前情况有些不同。要从 SSH 运行 WSL(使用 2.0.0),您需要使用:

来自 PowerShell:

& 'C:\Program Files\WSL\wsl.exe'
Run Code Online (Sandbox Code Playgroud)

来自命令:

"c:\Program Files\WSL\wsl.exe"
Run Code Online (Sandbox Code Playgroud)

请注意,WSL 开发团队已表示他们正在努力为基本wsl.exe命令提供此功能。

  • 这确实有效,已在 Windows 11 21H2 上进行了测试。重新安装 wsl 有点困难,没有 `wsl --install --inbox` 命令,但是卸载 wsl 后,您可以访问 https://aka.ms/wsl2kernel 并安装提供的更新。我不确定这是否起作用,但我还根据“下载发行版”的说明安装了 Ubuntu 的非商店版本(而不是给您一个可能会更改的 URL,谷歌“如果 Microsoft Store 应用程序不可用”) ,您可以下载并手动安装 Linux 发行版`) (3认同)

小智 9

仍然从远程计算机访问 WSL2 的解决方案是在 wsl 中设置 ssh 并将客户端的公钥添加到 wsl,然后使用 ssh ProxyJump 选项:

ssh -J <windows_host_username>@<ip_windows_host> <wsl_username>@localhost
Run Code Online (Sandbox Code Playgroud)