SSH连接服务器遭遇Permission denied (publickey)错误的排查求助
SSH连接服务器遭遇Permission denied (publickey)错误的排查求助
你好,我仔细看了你的SSH调试日志和问题描述,先帮你理清核心问题——那个/etc/ssh/ssh_known_hosts找不到的提示不是导致你连接失败的原因,真正的问题出在你的本地没有可用的SSH密钥对,而且服务器只允许公钥认证方式。
日志关键信息分析
从你提供的调试日志里能明确看到两个核心点:
- 你的本地
~/.ssh目录下没有任何SSH密钥文件:
SSH客户端依次尝试了所有默认的私钥文件(id_rsa、id_dsa、id_ecdsa等),但全部返回no such identity,说明你根本没生成过SSH密钥对:debug1: Trying private key: /c/Users/pc8/.ssh/id_rsa debug3: no such identity: /c/Users/pc8/.ssh/id_rsa: No such file or directory - 服务器只接受公钥认证:
日志里明确显示服务器允许的认证方式只有publickey,禁用了密码登录:
因为你没有可用的密钥完成认证,所以才会触发debug1: Authentications that can continue: publickeyPermission denied (publickey)错误。
具体解决步骤
1. 生成SSH密钥对
在GitBash窗口里执行以下命令,全程按回车即可(不需要设置密钥密码,除非你需要额外的安全验证):
ssh-keygen -t rsa -b 4096
执行完成后,你的/c/Users/pc8/.ssh/目录下会生成两个文件:
id_rsa:私钥文件(务必妥善保管,不要泄露给任何人)id_rsa.pub:公钥文件(需要上传到服务器)
2. 将公钥上传到服务器
你可以用两种方式完成这一步:
- 如果GitBash支持
ssh-copy-id命令,直接执行:ssh-copy-id [youruser]@[yourLinode] - 如果
ssh-copy-id不可用,手动复制公钥内容:
打开id_rsa.pub文件,复制里面的全部文本,然后联系你的资深开发者,让他把这段内容添加到服务器上[youruser]用户的~/.ssh/authorized_keys文件末尾。注意:服务器上的
~/.ssh目录权限必须设置为700,authorized_keys文件权限必须设置为600,否则公钥认证会失败。
3. 重新尝试连接
完成上面的步骤后,再次执行你之前的连接命令:
ssh -vvv [youruser]@[yourLinode]
这次应该就能成功连接服务器了。
关于无关错误的说明
你看到的fopen /etc/ssh/ssh_known_hosts: No such file or directory是正常现象:/etc/ssh/ssh_known_hosts是系统级的主机密钥存储文件,而你用的GitBash是用户级环境,系统级文件不存在很正常。而且日志里已经显示你的用户级~/.ssh/known_hosts已经存储了服务器的主机密钥(debug1: Found key in /c/Users/pc8/.ssh/known_hosts:2),所以这个提示完全不影响连接,可以忽略。
备注:内容来源于stack exchange,提问作者Rajeev Singh
相关产品推荐
相关产品推荐

