我有 Windows 10 Home(不带 Hyper-V)和在 WSL 上运行的 Ubuntu。在 Ubuntu 中,我能够使用 运行 SSH 服务器sudo service ssh start
。
之后,我决定从 Snap Store 安装 k9s,但 WSL 上的 Ubuntu 没有 Snap Store。为了解决这个问题,尝试了以下步骤这里:
sudo apt-get update && sudo apt-get install -yqq daemonize dbus-user-session fontconfig
sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME
...但失败了。我收到了一些有关虚拟机管理程序的错误。
主要问题是,现在,当我尝试使用与上述相同的命令运行 SSH 服务器时,出现错误:
Failed to start ssh.service: transport endpoint is not connected
请帮助我将 Ubuntu 恢复到可以再次运行 SSH 的状态。
答案1
Failed to start ssh.service: transport endpoint is not connected.
至少到目前为止,您可能已经解决了这一部分。出现此消息的原因是,一旦您在其自己的命名空间中启动 Systemd,它就会运行,无论您是否在该命名空间中。这意味着该service
命令现在已映射到systemctl
,即使systemctl
无法访问。
正如我提到的这个答案:
- 我不建议以这种方式运行 Systemd,除非你真的知道它在幕后做什么,或者可以弄清楚。
-
在向自己证明这是可行的之后,我建议完全退出所有 WSL 实例,然后执行
wsl --shutdown
。否则,在你这样做之前,有些东西会“损坏”。
一旦重新启动wsl --shutdown
,Systemd 应该不再在单独的命名空间中运行,并且命令service
应该恢复到“正常”状态(就 WSL2 而言)。
之后,我决定从 snap store 安装 k9s。但是 ubuntu 没有 snap store 来解决这个问题,我使用了以下步骤
如果你的系统能够升级到 Windows 11,Systemd 的官方支持目前处于测试阶段。请参阅这个答案了解如何启用。Snap 商店可以与此方法一起使用。