我刚刚从微软商店将 Ubuntu-24.04 安装到我的 Windows 11 主机上的 WSL2 中。登录并升级安装后,我首先想安装的是 openssh-server,但失败了。
这是安装命令输出的最后几行:
Creating config file /etc/ssh/sshd_config with new version
Created symlink /etc/systemd/system/sockets.target.wants/ssh.socket → /usr/lib/systemd/system/ssh.socket.
Created symlink /etc/systemd/system/ssh.service.requires/ssh.socket → /usr/lib/systemd/system/ssh.socket.
Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 148.
dpkg: error processing package openssh-server (--configure):
installed openssh-server package post-installation script subprocess returned error exit status 1
Processing triggers for man-db (2.12.0-4build2) ...
Processing triggers for libc-bin (2.39-0ubuntu8.1) ...
Errors were encountered while processing:
openssh-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
如果有关系的话,这是我的.wslconfig:
[wsl2]
kernel=C:\\WSL2\\bzImage
guiApplications=true
debugConsole=false
networkingMode=mirrored
[experimental]
hostAddressLoopback=true
如果想要在 WSL2 中运行 6.x 内核,则自定义内核是微软提供的 6.1.21.2-microsoft-standard-WSL2+
有任何见解导致 openssh-server 安装失败吗?
答案1
显然,openssh-server 的安装脚本尝试启用并启动该服务,监听默认端口 22。
当您使用镜像网络时,Windows 主机和 WSL 之间的端口是共享的,并且如果 Windows 或另一个正在运行的 WSL 发行版上的 ssh 也在监听端口 22,则安装程序将无法启动,因为端口 22 已被使用。
我必须在 /etc/ssh/sshd_config.d/ 中创建一个带有自定义端口号的 conf 文件,以避免冲突。然后一切都按预期运行。
示例:创建文件 /etc/ssh/sshd_config.d/99-fixwslport.conf,内容如下
Port 50022