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

私有部署GitLab SSH密钥登录提示Permission denied的排查求助

GitLab SSH 公钥认证失败排查步骤

结合你当前的日志、配置和已完成的排查操作,因为在Linux Mint、Windows 10两个独立客户端环境下都出现完全一致的公钥拒绝报错,基本可以排除客户端本地SSH配置、ssh-agent加载异常的问题,优先从服务端侧定位故障,排查路径按优先级排序:

1. 优先校验服务端文件权限匹配问题

Debian 10搭载的OpenSSH版本对SSH相关文件、目录的权限校验非常严格,只要权限不符合要求,哪怕公钥内容完全正确,也会直接返回公钥认证拒绝,且不会在客户端日志中给出明确提示:

  • 检查GitLab运行用户(默认是git)的家目录权限:执行stat /var/opt/gitlab,要求属主为git:git,权限值不能包含全局可写位(即禁止777、775这类带o+w的权限,正确配置一般为755或700)
  • 检查git用户的.ssh目录权限:执行stat /var/opt/gitlab/.ssh,要求属主为git:git,权限值必须为700
  • 检查authorized_keys文件权限:执行stat /var/opt/gitlab/.ssh/authorized_keys,要求属主为git:git,权限值必须为600
  • 临时排除动态密钥拉取逻辑的影响:你开启的“数据库快速查询授权SSH密钥”功能本质是通过AuthorizedKeysCommand动态从GitLab数据库拉取匹配的公钥,绕过本地authorized_keys文件,一旦这个命令执行的权限、路径有问题,会直接导致认证失败。可以临时在GitLab配置中切换回本地authorized_keys文件模式,手动把公钥写入上述路径的文件中,测试认证是否恢复。

2. 校验RSA密钥算法兼容性问题

从客户端调试日志可以看到,客户端已经成功加载RSA公钥并向服务端发起认证申请,需要确认服务端sshd的配置没有禁用对应RSA签名算法:

  • 登录Debian 10服务端,打开/etc/ssh/sshd_config,找到PubkeyAcceptedKeyTypes配置项,确认允许列表中包含ssh-rsa,rsa-sha2-256,rsa-sha2-512三个算法;如果配置被修改过,可以临时追加配置PubkeyAcceptedKeyTypes +ssh-rsa,rsa-sha2-256,rsa-sha2-512
  • 配置修改后先执行sshd -t校验语法合法性,再重启sshd服务,禁止不校验语法直接重载配置
  • 核对两端的密钥配对关系:避免出现“本地客户端加载的公钥与服务端存储的公钥不属于同一对密钥”的低级错误,分别在本地和服务端执行命令对比指纹:
    • 本地执行ssh-keygen -lf ~/.ssh/pubkey
    • 服务端执行ssh-keygen -lf /var/opt/gitlab/.ssh/authorized_keys
      两边输出的SHA256指纹如果不一致,即为密钥不匹配问题。

3. 排查系统安全规则拦截问题

Debian 10默认开启AppArmor安全模块,如果GitLab安装时没有正确加载匹配的AppArmor规则,会导致sshd进程无权限读取git用户家目录下的密钥文件,直接返回认证拒绝且无明确提示:

  • 临时执行aa-teardown关闭AppArmor测试SSH连接,如果此时认证可以正常通过,即为AppArmor规则拦截导致的故障,需要重新加载GitLab对应的AppArmor规则,或调整sshd的访问权限放开对/var/opt/gitlab目录的读取限制。

4. 开启服务端详细日志精确定位

客户端的调试日志只能看到服务端拒绝了公钥申请,无法获取服务端拒绝的具体原因,需要临时调整sshd日志级别定位问题:

  • 把/etc/ssh/sshd_config中的LogLevel参数修改为VERBOSE
  • 重启sshd后从客户端重新发起SSH连接,查看服务端/var/log/auth.log中的认证记录,日志会明确标注拒绝认证的具体原因(权限不足、密钥不匹配、规则拦截等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 03:57:03