Windows系统SSH服务器公钥认证登录失败问题求助(WSL场景)
WSL SSH免密登录失败的解决步骤
1. 确认公钥已正确部署到WSL端
- 客户端生成密钥对(若未生成):
ssh-keygen -t rsa,全程按回车使用默认配置即可。 - 将客户端
~/.ssh/id_rsa.pub的内容完整复制到WSL用户目录下的~/.ssh/authorized_keys文件中。如果~/.ssh目录不存在,先在WSL终端执行mkdir ~/.ssh创建。 - 避免直接从Windows文件管理器复制文件到WSL的
~/.ssh目录,这会导致权限继承Windows规则,引发后续认证问题。
2. 修复WSL内.ssh目录及文件的权限
sshd对密钥文件的权限要求严格,必须在WSL终端执行以下命令修正:
chmod 700 ~/.ssh:设置目录仅所有者可读写执行chmod 600 ~/.ssh/authorized_keys:设置密钥文件仅所有者可读写
3. 检查并修正sshd配置
编辑WSL内的/etc/ssh/sshd_config文件(需sudo权限),确保以下配置项正确:
PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes # 先保留密码认证,免密成功后再改为no ChallengeResponseAuthentication no # 禁用交互式认证
修改后重启sshd服务:sudo service ssh restart
4. 正确测试免密登录
- 不要使用公钥文件作为身份参数,客户端应使用私钥。正确命令为:
ssh -i ~/.ssh/id_rsa <username>@<desktop-ip> - 若私钥是默认路径(
~/.ssh/id_rsa),可简化为:ssh <username>@<desktop-ip>
5. 排查剩余问题
如果仍报错,查看WSL内的认证日志获取详细信息:sudo tail /var/log/auth.log
日志中会明确提示失败原因,比如权限不足、公钥格式错误等,针对性修复即可。
内容的提问来源于stack exchange,提问作者Frank Qiu
相关产品推荐
相关产品推荐

