启动 Systemd 后无法在 WSL Ubuntu 上运行 SSH 服务器

启动 Systemd 后无法在 WSL Ubuntu 上运行 SSH 服务器

我有 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 商店可以与此方法一起使用。

相关内容