You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH连接服务器遭遇Permission denied (publickey)错误的排查求助

SSH连接服务器遭遇Permission denied (publickey)错误的排查求助

你好,我仔细看了你的SSH调试日志和问题描述,先帮你理清核心问题——那个/etc/ssh/ssh_known_hosts找不到的提示不是导致你连接失败的原因,真正的问题出在你的本地没有可用的SSH密钥对,而且服务器只允许公钥认证方式。

日志关键信息分析

从你提供的调试日志里能明确看到两个核心点:

  1. 你的本地~/.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
    
  2. 服务器只接受公钥认证:
    日志里明确显示服务器允许的认证方式只有publickey,禁用了密码登录:
    debug1: Authentications that can continue: publickey
    
    因为你没有可用的密钥完成认证,所以才会触发Permission 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:49:49