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

新机器GitLab SSH克隆失败,已添加公钥仍无法使用求助

解决GitLab SSH克隆失败的客户端排查方案

既然旧机器能正常通过SSH克隆,说明GitLab服务器端配置没问题,问题肯定出在新机器的SSH客户端上。结合你提到已经添加了公钥但还是失败,我给你整理几个最常见的排查和解决步骤:

  • 先锁死密钥文件的权限!
    SSH对密钥文件的权限要求特别严格,私钥不能让其他用户读取,否则会直接拒绝使用。执行这几条命令修正权限:

    chmod 700 ~/.ssh          # 确保.ssh目录只有自己能访问
    chmod 600 ~/.ssh/id_rsa   # 私钥必须是600权限
    chmod 644 ~/.ssh/id_rsa.pub # 公钥可以宽松一点
    

    这是最容易踩的坑,很多时候就是权限不对导致的。

  • 核对GitLab上的公钥是否完全一致
    复制公钥的时候很容易不小心漏掉末尾的username@hostname部分,或者多了换行/空格。打开新机器的~/.ssh/id_rsa.pub,全选复制,然后去GitLab的SSH密钥设置页面,对比一下粘贴的内容和你添加的密钥是否完全相同,包括最后那串标识。

  • 检查SSH配置是否有冲突
    看看新机器的/etc/ssh/ssh_config或者用户目录下的~/.ssh/config有没有针对GitLab域名的特殊配置,比如错误指定了其他机器的密钥文件,或者加了代理之类的。如果不确定,可以直接给GitLab域名单独写个配置:
    新建或编辑~/.ssh/config,添加:

    Host <DOMAIN_NAME>.de
      User git
      IdentityFile ~/.ssh/id_rsa  # 明确指定新机器的私钥路径
      PreferredAuthentications publickey
    

    保存后再跑ssh -vT git@<DOMAIN_NAME>.de,看输出里是不是用了这个指定的密钥。

  • 深挖SSH调试输出的关键信息
    你贴的调试输出只到开头,重点要看认证阶段的内容:

    比如有没有出现 "debug1: Offering RSA public key: ~/.ssh/id_rsa",然后服务器有没有返回接受还是拒绝
    如果看到 "Permission denied (publickey)",那要么是密钥不对,要么是权限问题;如果是 "no mutual signature algorithm",那是新旧OpenSSH版本的算法不兼容。
    要是算法不兼容,可以在刚才的~/.ssh/config里加几行兼容配置:

    Host <DOMAIN_NAME>.de
      KexAlgorithms +diffie-hellman-group1-sha1
      HostkeyAlgorithms +ssh-rsa
      PubkeyAcceptedAlgorithms +ssh-rsa
    

    不过这只是临时解决,最好还是升级新机器的OpenSSH版本到较新的稳定版。

  • 确认SSH代理是否加载了密钥
    有些时候密钥没被ssh-agent加载,也会导致认证失败。执行这两条命令试试:

    eval "$(ssh-agent -s)"  # 启动ssh-agent
    ssh-add ~/.ssh/id_rsa   # 把私钥加到代理里
    

    加完之后再试克隆,应该就能用上密钥了。

要是这些步骤都试过还是不行,把ssh -vT git@<DOMAIN_NAME>.de的完整输出贴出来,尤其是从“Authentications that can continue”开始的部分,这样就能精准定位问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:01:34