如何启用诸如 OpenSSH 服务器之类的服务以在 WSL2 启动时启动?目前,每次使用 启动 WSL2 时,我都必须重新启动它sudo service ssh start
。
答案1
WSL 启动时运行任何服务的首选方式取决于您的 Windows 版本:
Windows 11
/etc/wsl.conf
现在,您可以通过以下命令创建/编辑(通过 sudo)来启动实例时执行任意命令行:
[boot]
command="service ssh start"
此命令以 root 身份运行,不生成任何输出。如果您需要运行多个命令,则它们应该在字符串内以分号分隔(或类似&&
)command=
。
更新:在我看来,此功能存在错误这将导致 WSL 实例在未使用时终止,即使以 启动的进程boot.command
仍在运行。对于许多用户来说,这可能不是问题,因为您可能正在运行该实例,并在退出 shell 时注意或关心它是否停止,但您应该注意这种行为。
Windows 10
在 Windows 10 的 WSL 上,您需要通过用户的其中一个 shell 启动脚本来启动该服务。
在您的中使用以下语法~/.bash_profile
:
wsl.exe -u root service ssh status || wsl.exe -u root service ssh start
wsl.exe -u root
其优点是sudo
每次启动时都不需要输入密码。从 PowerShell 和 CMD 中,无需使用 即可调用它exe
,但从 WSL 内部调用则需要使用扩展。
当然,您也可以使用sudoers
它来抑制对密码的要求,但是 WSL 使得这变得没有必要。
请注意,每次启动时都会生成一条或两条消息。要禁止此操作,请使用如下语法:
wsl.exe -u root service ssh status > /dev/null || wsl.exe -u root service ssh start > /dev/null
其他选择
这些方法用于运行命令当 WSL 启动时,这是一个相当简单的案例。在其他超级用户问题中,还有更复杂的变体,这些变体将:
- 当 Windows 用户登录时运行
- 在 Windows 计算机启动时运行