当通过SSH登录服务器时,如果遇到“Permission denied (publickey)”错误,通常是因为公钥认证失败。以下是常见原因及解决方法:1) 检查~/.ssh/authorized_keys文件中是否正确添加了公钥;2) 确保本地私钥文件路径正确且权限设置为400或600;3) 验证SSH配置文件(/etc/ssh/sshd_config)中PubkeyAuthentication设为yes;4) 确认服务器上的用户家目录、.ssh目录及authorized_keys文件的权限正确(分别为700、700、600)。此外,检查是否使用正确的用户名和私钥登录,避免混淆。若问题仍未解决,可通过增加-v参数(如ssh -v user@server)查看详细日志,定位具体原因。
1条回答 默认 最新
扶余城里小老二 2025-05-25 05:10关注1. 问题概述
当通过SSH登录服务器时,如果遇到“Permission denied (publickey)”错误,通常是因为公钥认证失败。以下是逐步分析该问题的常见原因及解决方法。
1.1 常见技术问题
- 公钥未正确添加到
~/.ssh/authorized_keys文件中。 - 本地私钥文件路径不正确或权限设置不符合要求。
- SSH配置文件
/etc/ssh/sshd_config中未启用公钥认证。 - 服务器上的用户家目录、
.ssh目录及authorized_keys文件权限设置不当。
2. 分析过程
以下是从浅入深的分析步骤:
2.1 检查公钥是否正确添加
确保远程服务器上的
~/.ssh/authorized_keys文件包含正确的公钥内容。可以通过以下命令验证:cat ~/.ssh/authorized_keys如果公钥缺失,请将本地生成的公钥(如
id_rsa.pub)复制到该文件中。2.2 验证私钥文件权限
本地私钥文件(如
id_rsa)必须具有适当的权限设置。使用以下命令检查并修正权限:chmod 400 ~/.ssh/id_rsa确保私钥文件路径正确且没有被意外修改。
3. 解决方案
以下是针对上述问题的具体解决方案:
3.1 修改SSH配置文件
编辑
/etc/ssh/sshd_config文件,确保以下参数已正确配置:PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys保存文件后,重启SSH服务以应用更改:
sudo systemctl restart sshd3.2 调整目录和文件权限
确保服务器上的相关目录和文件权限正确。运行以下命令进行设置:
chmod 700 ~ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys4. 进阶排查
若以上步骤未能解决问题,可以使用调试模式获取更多详细信息:
4.1 使用
-v参数查看日志通过增加
-v参数运行SSH命令,定位具体原因:ssh -v user@server根据输出的日志信息,进一步分析问题所在。
4.2 流程图展示排查步骤
以下是排查问题的流程图:
graph TD; A[开始] --> B{公钥是否正确?}; B --否--> C[检查authorized_keys]; B --是--> D{私钥权限是否正确?}; D --否--> E[调整私钥权限]; D --是--> F{SSH配置是否正确?}; F --否--> G[修改sshd_config]; F --是--> H{权限设置是否正确?}; H --否--> I[调整目录和文件权限]; H --是--> J{仍无法解决?}; J --是--> K[使用-v参数调试];本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 公钥未正确添加到