在 WSL2 上的 Ubuntu-24.04 中安装 openssh-server

在 WSL2 上的 Ubuntu-24.04 中安装 openssh-server

我刚刚从微软商店将 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

相关内容