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

GitLab通过SSH克隆报错Permission denied(publickey)求助

让我们一步步排查这个SSH权限问题,大概率是你的配置或密钥匹配环节出了小疏漏:

1. 先核对SSH Config文件的正确性

确保~/.ssh/config里针对GitLab的配置条目没有错误,尤其是要和你生成的密钥文件名对应:

Host gitlab.foo.bar.com
  HostName gitlab.foo.bar.com
  User git
  IdentityFile ~/.ssh/gitlab  # 这里必须和你的私钥文件名完全一致
  IdentitiesOnly yes  # 关键!强制SSH仅使用指定密钥,避免系统自动尝试其他密钥导致冲突
2. 修正SSH连接测试命令

你之前的测试命令加了项目路径是错误的,GitLab的SSH认证不需要附带项目信息,正确的测试命令应该是:

# 直接测试与GitLab服务器的SSH连接
ssh -vT git@gitlab.foo.bar.com
# 或者指定密钥测试
ssh -vT -i ~/.ssh/gitlab git@gitlab.foo.bar.com

执行后如果看到Welcome to GitLab, @你的用户名!的提示,说明认证成功;如果还是Permission denied,继续往下排查。

3. 确认公钥的添加位置

注意:个人SSH密钥需要添加到你的GitLab个人账户设置中,而不是项目的部署密钥(部署密钥是给服务端用的,你作为项目成员应该用个人密钥):

  • 登录GitLab后,进入「个人设置」→「SSH密钥」
  • 检查添加的公钥是否是~/.ssh/gitlab.pub里的完整内容,确保没有多余空格、换行或截断。
4. 修复密钥文件的权限

SSH对密钥文件的权限要求非常严格,权限不正确会直接拒绝使用密钥,执行以下命令修正:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/gitlab
chmod 644 ~/.ssh/gitlab.pub
5. 验证Git克隆地址的正确性

确认你使用的克隆地址是标准的SSH格式:git@gitlab.foo.bar.com:bla/blub.git,不要和HTTPS地址混淆,也不要遗漏冒号后的项目路径。

6. 排查SSH代理干扰(如果开启了代理)

如果你本地运行了SSH代理,可能会导致密钥被代理接管而无法正常使用,可暂时关闭代理后重试:

unset SSH_AUTH_SOCK

按以上步骤逐一排查后,再尝试克隆项目,应该能解决权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:43:45