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

GitLab Geo Secondary节点SSH连接持续要求输入密码的问题排查请求

解决GitLab Geo Secondary节点SSH公钥认证失败的问题

从你提供的SSH debug日志可以明确看到:客户端已经尝试使用/root/.ssh/id_rsa的公钥进行认证,但Secondary节点拒绝了这个请求,最终 fallback 到密码认证环节。下面是一步步的排查和修复方案:

1. 确认Secondary节点Git用户的SSH密钥配置

  • 登录到GitLab Secondary节点,找到git用户的SSH目录(默认路径是/var/opt/gitlab/.ssh/)
  • 检查authorized_keys文件中是否包含你客户端机器上/root/.ssh/id_rsa.pub的完整内容

    注意:GitLab会自动管理这个文件,不要手动修改。正确的做法是确保你的用户账号在Primary节点上已经添加了该SSH密钥,并且Geo同步已经将密钥同步到Secondary节点。

  • 验证文件权限是否正确:
    sudo chmod 700 /var/opt/gitlab/.ssh
    sudo chmod 600 /var/opt/gitlab/.ssh/authorized_keys
    sudo chown -R git:git /var/opt/gitlab/.ssh
    

2. 检查Secondary节点的sshd配置

  • 打开SSH服务配置文件(通常是/etc/ssh/sshd_config),确认以下配置项:
    PubkeyAuthentication yes
    AuthorizedKeysFile  /var/opt/gitlab/.ssh/authorized_keys
    
  • 重启GitLab的SSH服务(如果是Omnibus安装的GitLab):
    sudo gitlab-ctl restart sshd
    

3. 验证Geo节点的用户数据同步状态

  • 在Primary节点的GitLab后台,确认你的用户账号下已经正确添加了目标SSH密钥
  • 登录Secondary节点的GitLab后台,进入Geo页面,检查用户数据的同步进度,确保SSH密钥已经同步完成
  • 可以用GitLab的诊断命令检查Geo配置是否正常:
    sudo gitlab-rake gitlab:geo:check
    

4. 本地测试公钥认证(排除网络因素)

  • 在Secondary节点上切换到git用户:
    sudo su - git
    
  • 将客户端的id_rsa私钥临时复制到git用户的目录,然后测试本地SSH连接:
    ssh -i ./id_rsa git@localhost
    
    如果本地认证成功,说明问题出在网络或客户端到节点的配置;如果失败,说明节点本地的SSH配置或密钥管理有问题。

5. 检查安全模块限制

  • 如果Secondary节点启用了SELinux或AppArmor,可能会阻止sshd读取authorized_keys文件
  • 可以临时关闭SELinux测试:
    sudo setenforce 0
    
    如果此时认证成功,需要调整SELinux策略,为authorized_keys设置正确的上下文:
    sudo restorecon -Rv /var/opt/gitlab/.ssh
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:27:29