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

AWS Ubuntu实例GitLab SSH密钥失效:Permission Denied(public key)求助

解决AWS Ubuntu实例GitLab SSH认证失败(Permission denied (public key))的方案

看起来你遇到的问题很典型,我帮你梳理几个关键排查步骤,尤其是你提供的ssh -vvv gitlab.com命令里藏了一个容易忽略的错误:

  • 先修正SSH连接命令的核心错误
    你之前执行的ssh -vvv gitlab.com是用当前系统用户(比如ubuntu)去连接GitLab,但GitLab的SSH服务只允许git用户进行仓库操作!正确的测试命令应该是:

    ssh -vvv git@gitlab.com
    

    先试试这个,很多时候这个小疏忽就是问题根源。

  • 确保SSH密钥文件的权限合规
    AWS实例的文件权限有时候会因为sudo操作、系统更新等发生变化,而SSH对密钥权限要求非常严格:

    # 设置私钥为仅自己可读可写
    chmod 600 ~/.ssh/id_rsa
    # 设置.ssh目录为仅自己可访问
    chmod 700 ~/.ssh
    # 确保密钥目录和文件属于当前用户
    sudo chown $USER:$USER ~/.ssh -R
    
  • 强制指定密钥连接,排除多密钥冲突
    如果你的实例上有多个SSH密钥,系统可能自动选用了未添加到GitLab的那一个,试试强制指定你在GitLab配置的密钥:

    ssh -vvv -i ~/.ssh/id_rsa git@gitlab.com
    

    把id_rsa换成你的密钥文件名(如果不是默认的话)。

  • 核对本地公钥与GitLab配置的一致性
    重新导出本地公钥,和GitLab后台的配置逐字符对比,确保没有多余空格、换行或者截断:

    cat ~/.ssh/id_rsa.pub
    

    复制输出内容,去GitLab的「Settings > SSH Keys」页面检查,确认完全匹配。

  • 检查AWS安全组与网络连通性
    虽然之前正常,但有可能实例的安全组出站规则被修改,导致无法连接GitLab的SSH端口(22)。可以用telnet测试连通性:

    telnet gitlab.com 22
    

    如果能看到类似SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.1的欢迎信息,说明网络没问题;如果连不上,需要去AWS控制台调整安全组的出站规则,允许端口22的流量。

  • 排查GitLab端的密钥状态
    登录GitLab后台,查看你添加的SSH密钥是否被标记为过期,或者存在重复密钥的情况。GitLab偶尔会禁用长时间未使用的密钥,或者重复密钥会导致认证冲突。

内容的提问来源于stack exchange,提问作者dsmith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:30:10