Windows(WSL)环境下SSH连接被拒,启动SSH服务器报错
WSL环境SSH连接被拒、sshd启动异常排查方案
核心排查与解决步骤
- 优先以前台调试模式启动sshd定位根因,不要直接后台启动服务:执行
sudo /usr/sbin/sshd -d,终端会直接输出启动过程的卡点、权限校验错误、端口绑定失败等核心报错,是最高效的排查手段 - 核对22端口占用情况:执行
sudo lsof -i :22,若检测到其他进程占用22端口,直接终止占用进程,或修改/etc/ssh/sshd_config文件中的Port配置为未被占用的端口(如2222) - 修正SSH相关目录、文件的权限:WSL跨文件系统的权限异常是sshd启动被拦截的高频诱因,依次执行以下命令修正权限:
sudo chmod 700 /etc/ssh/sudo chmod 600 /etc/ssh/ssh_host_*_keychmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
- 匹配当前WSL版本的服务管理方式:旧版WSL默认未启用systemd,直接执行
sudo service ssh start常出现服务假启动、进程卡死的问题,二选一处理即可:- 不启用systemd:直接手动执行
sudo /usr/sbin/sshd启动服务,验证能否正常绑定端口 - 启用systemd支持:编辑Windows用户目录下的
.wslconfig文件,添加配置:
保存后在Windows PowerShell执行[wsl2] systemd=truewsl --shutdown重启WSL实例,再通过sudo systemctl enable --now ssh托管SSH服务
- 不启用systemd:直接手动执行
- 校验防火墙拦截:Windows Defender防火墙默认可能拦截WSL侧映射的SSH端口,需在入站规则中放行对应端口的TCP连接;若使用NAT网络模式的WSL,还需确认WSL的IP与端口映射是否正常
- 核对sshd核心配置项:检查
/etc/ssh/sshd_config中的关键配置是否符合使用需求:- 若需密码登录,确认
PasswordAuthentication yes未被注释或设为no - 确认
ListenAddress 0.0.0.0未被修改为仅允许本地回环访问的地址
- 若需密码登录,确认
内容的提问来源于stack exchange,提问作者Uttkarsh Saini
相关产品推荐
相关产品推荐

