You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

配置自定义SSH密钥连接GitHub时遇Permission denied (publickey)错误

解决SSH连接GitHub时Permission denied (publickey)的问题

我来帮你一步步排查这个SSH连接GitHub的权限问题,这种Permission denied (publickey)的情况大多是权限、密钥匹配或者配置细节的问题,咱们逐个检查:

  • 检查私钥文件的权限
    SSH对密钥文件的权限要求非常严格,私钥文件必须是仅当前用户可读可写,否则会被SSH客户端拒绝使用。执行以下命令修正权限:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/id_rsa_xxx
    

    第一行确保.ssh目录只有你能访问,第二行确保私钥文件的权限符合要求。

  • 验证私钥对应的公钥是否已添加到GitHub账户
    先导出私钥对应的公钥内容:

    cat ~/.ssh/id_rsa_xxx.pub
    

    复制输出的完整内容(开头是ssh-rsaed25519,结尾是你的邮箱或备注),登录GitHub后进入Settings > SSH and GPG keys,检查这个公钥是否已经添加,注意不要有多余的空格、换行或者复制不全的情况。

  • 测试私钥是否能被SSH正确识别
    有时候SSH代理没有加载你的私钥,导致连接时无法使用指定的密钥。先启动SSH代理并添加私钥:

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa_xxx
    

    如果添加时提示输入密码,输入你设置的私钥密码即可。之后直接用该私钥测试连接GitHub:

    ssh -i ~/.ssh/id_rsa_xxx git@github.com
    

    如果这个命令能成功连接(会提示你是否继续,输入yes后会显示GitHub的欢迎信息),说明密钥本身没问题,问题可能出在config配置上。

  • 检查~/.ssh/config的配置细节
    你的基础配置没问题,可以调整细节确保可靠:

    Host github.com-xxx
        HostName github.com
        User git
        IdentityFile /Users/xxx/.ssh/id_rsa_xxx  # 使用绝对路径避免波浪号解析问题
        IdentitiesOnly yes  # 强制使用指定的私钥,避免SSH尝试其他密钥干扰
    

    添加IdentitiesOnly yes可以让SSH只使用你指定的这个私钥,不会去尝试其他id_rsa文件,避免和你其他服务器的密钥冲突。

  • 查看完整的debug日志定位问题
    你目前只贴了部分日志,建议执行更详细的debug命令:

    ssh -vvv github.com-xxx
    

    查看完整的日志,重点关注这几部分:

    • 是否加载了正确的IdentityFile
    • 是否尝试使用该私钥进行认证
    • 服务器返回的具体拒绝原因(比如密钥不被识别、没有发送密钥等)

内容的提问来源于stack exchange,提问作者Marian Paździoch

火山引擎 最新活动