Xshell 是 Windows 平台上常用的 SSH 客户端,支持通过公钥实现免密登录,大大提高了服务器管理效率。然而,在实际使用中,很多用户会遇到 免密登录配置后仍提示密码输入 的问题。这类问题不仅影响操作效率,也容易造成误判,认为 Xshell 或服务器存在故障。
免密登录不生效通常并非客户端问题,而是 SSH 公钥配置错误、权限设置不当或文件路径不正确 等多种原因叠加造成的。如果没有系统排查,即使重复配置也无法生效,容易浪费大量时间。
本文将从 SSH 授权配置、文件权限检查、客户端与服务器综合排查 三个角度进行深入解析,帮助用户快速定位问题,并提供可操作的解决方案,确保 Xshell 免密登录顺利生效。

一、SSH 公钥授权配置
——免密登录最关键的环节
1. 公钥生成与上传
免密登录依赖 公钥和私钥对 的正确配置。生成公钥后,需要将公钥内容添加到服务器的 ~/.ssh/authorized_keys 文件中。如果公钥内容不完整或格式错误,SSH 将无法识别,从而提示仍需密码。
操作建议:
- 使用
ssh-keygen生成公钥与私钥(默认 RSA 或 Ed25519) - 确认
.pub文件内容完整 - 将公钥追加到服务器
~/.ssh/authorized_keys文件末尾
2. SSH 配置文件检查
服务器端的 SSH 配置文件 sshd_config 决定了公钥认证是否启用。关键参数包括:
PubkeyAuthentication yes:开启公钥认证AuthorizedKeysFile .ssh/authorized_keys:指定公钥存放路径PasswordAuthentication no(可选):禁用密码登录
检查配置后,需要重启 SSH 服务(如 systemctl restart sshd)使修改生效。
3. 私钥在 Xshell 中的配置
客户端 Xshell 需要正确加载私钥文件:
- 私钥需与公钥匹配
- 文件格式支持 PPK 或 OpenSSH 私钥
- 配置中选择正确的用户和端口
确保 Xshell 会话配置中启用了 公钥认证 并绑定了正确私钥,才能实现免密登录。

二、文件与目录权限检查
——免密登录失败的高频原因
1. .ssh 目录权限
Linux/Unix 系统要求 .ssh 目录权限严格,否则 SSH 会拒绝公钥认证。常见要求如下:
~/.ssh权限:700~/.ssh/authorized_keys权限:600- 文件所属用户必须为登录用户
使用命令检查:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown user:user ~/.ssh -R
2. 公钥文件内容与换行问题
复制公钥时,可能出现:
- 换行符错误(Windows 与 Linux 不同)
- 多余空格或特殊字符
建议使用 cat ~/.ssh/authorized_keys 或文本编辑器确认每行仅包含一个完整公钥,并避免换行或乱码。
3. 用户主目录权限
用户主目录权限过宽(如 755 以上)也会导致 SSH 拒绝公钥认证。
chmod 750 ~
确保目录权限合理,避免 SSH 安全策略阻止免密登录。
三、客户端与服务器综合排查
——保证配置生效的最终步骤
1. 测试免密登录
配置完成后,通过命令行或 Xshell 测试:
ssh -i ~/.ssh/id_rsa user@server
如果仍需密码,可使用 -v 参数开启详细日志,查看失败原因。
2. 检查 SELinux 或防火墙策略
部分系统启用了 SELinux 或特定安全策略,会阻止 .ssh 文件访问或权限继承。可通过:
getenforce
临时禁用或调整 SELinux 策略进行测试。
3. 完整修复步骤汇总
- 重新生成公钥与私钥并确认匹配
- 检查服务器端
~/.ssh/authorized_keys内容及权限 - 确认用户主目录权限符合 SSH 安全要求
- 检查
sshd_config配置并重启 SSH 服务 - 在 Xshell 中正确绑定私钥并启用公钥认证
- 使用命令行或 Xshell 测试登录,开启调试模式定位问题
按以上步骤排查,大多数免密登录配置不生效问题都能解决。

结语
Xshell 免密登录不生效,通常是 SSH 公钥配置错误、文件权限设置不当或客户端绑定私钥错误 导致的。通过系统排查授权文件、目录权限、客户端设置以及 SSH 配置,用户可以快速定位并解决问题,提高服务器运维效率。
已经配置公钥,但仍提示输入密码,原因是什么?
即使公钥上传成功,如果服务器端 ~/.ssh/authorized_keys 文件权限不正确 或用户主目录权限过宽,SSH 会拒绝认证,从而提示输入密码。建议检查 .ssh 权限是否为 700,authorized_keys 权限为 600,并确认主目录权限合理。
Xshell 私钥加载正确,但免密登录仍失败,可能原因?
可能原因包括 私钥与公钥不匹配、文件格式不支持或客户端配置错误。在 Xshell 会话中需绑定正确私钥文件,确保选择对应用户和端口,同时确认使用 PPK 或 OpenSSH 支持的格式,否则无法成功免密登录。
配置都正确,免密登录还是不生效,该如何排查?
可通过 开启 SSH 调试模式 排查具体原因,如 SELinux、防火墙或服务器 SSH 配置限制公钥认证。使用命令 ssh -v user@server 查看详细日志,定位认证失败环节,然后针对权限、配置或安全策略进行调整。