SSH免密连接持续要求输入密码,多种尝试后仍未解决
排查步骤及解决方案
1. 修正服务器端权限
SSH对服务器端的.ssh目录和authorized_keys文件权限要求极严,必须限制为仅当前用户可读写:
登录服务器后执行:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
2. 核对公钥内容一致性
手动对比本地id_rsa.pub和服务器authorized_keys中的对应条目,确保完全一致(包括开头的ssh-rsa标识和结尾的注释):
- 本地执行:
cat ~/.ssh/id_rsa.pub - 服务器执行:
cat ~/.ssh/authorized_keys
如果有差异,重新复制公钥到服务器,避免复制时的截断或误输入。
3. 检查服务器端SSH配置
- 查看用户个人配置
~/.ssh/config,确认没有PubkeyAuthentication no这类禁用公钥认证的设置 - 若有权限读取
/etc/ssh/sshd_config,确认PubkeyAuthentication yes和AuthorizedKeysFile .ssh/authorized_keys已开启(这两项是公钥认证的核心配置)
4. 排查服务器端密钥限制
有些服务器会使用替代密钥文件(比如authorized_keys2),或存在拒绝列表文件(比如~/.ssh/denykeys),检查这些位置是否影响你的公钥生效。
5. 重置本地SSH缓存
本地SSH代理可能缓存了旧密钥,执行以下命令清空后重新加载:
ssh-add -D ssh-add ~/.ssh/id_rsa
之后再尝试连接。
6. 强制指定密钥连接测试
直接指定密钥文件连接,排除配置文件的干扰:
ssh -i ~/.ssh/id_rsa riccardobarbieri@ldas-grid.ligo-wa.caltech.edu -vv
观察新的调试日志,看是否有更明确的拒绝原因。
内容的提问来源于stack exchange,提问作者Riccardo Barbieri
相关产品推荐
相关产品推荐

