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配置或密钥管理有问题。ssh -i ./id_rsa git@localhost
5. 检查安全模块限制
- 如果Secondary节点启用了SELinux或AppArmor,可能会阻止sshd读取
authorized_keys文件 - 可以临时关闭SELinux测试:
如果此时认证成功,需要调整SELinux策略,为sudo setenforce 0authorized_keys设置正确的上下文:sudo restorecon -Rv /var/opt/gitlab/.ssh
内容的提问来源于stack exchange,提问作者user4948798
相关产品推荐
相关产品推荐

