Files
gerrit/最终解决方案.md
2025-12-22 17:12:39 +08:00

2.1 KiB
Raw Permalink Blame History

Gerrit HTTP 推送认证问题 - 最终解决方案

问题根源

DEVELOPMENT_BECOME_ANY_ACCOUNT 模式默认不支持 HTTP Basic 认证进行 Git 操作。我已经在服务器端添加了 gitBasicAuth = true 配置。

解决方案

步骤 1等待服务器重启完成

服务器正在重启,请等待 10-15 秒。

步骤 2重新尝试推送

在您的本地电脑上执行:

cd /d/ttt/test-project

# 确保远程 URL 包含用户名
git remote set-url origin http://renjianbo@101.43.95.130:8080/test-project

# 清除已保存的凭证(如果有)
git credential reject <<EOF
protocol=http
host=101.43.95.130
port=8080
EOF

# 重新推送
git push origin HEAD:refs/for/master

当提示输入密码时,直接按回车(留空)。

步骤 3如果还是不行使用 SSH推荐

由于 HTTP 认证在开发模式下可能有限制,强烈建议使用 SSH

1. 确保 SSH 公钥已添加到 Gerrit

访问:http://101.43.95.130:8080/#/settings/ssh-keys

确保您的公钥已添加。

2. 修复防火墙(服务器端)

如果您有服务器管理员权限,执行:

sudo firewall-cmd --permanent --add-port=29418/tcp
sudo firewall-cmd --reload

如果是云服务器,还需要在云控制台的安全组中开放 29418 端口。

3. 使用 SSH 推送

cd /d/ttt/test-project

# 删除 HTTP 远程仓库
git remote remove origin

# 添加 SSH 远程仓库
git remote add origin ssh://renjianbo@101.43.95.130:29418/test-project

# 推送
git push origin HEAD:refs/for/master

当前服务器配置

[auth]
    type = DEVELOPMENT_BECOME_ANY_ACCOUNT
    gitBasicAuth = true

gitBasicAuth = true 应该允许 HTTP Basic 认证用于 Git 操作。

推荐方案

强烈推荐使用 SSH 方式,因为:

  • 更安全
  • 更可靠
  • 不受 HTTP 认证限制

如果 SSH 连接有问题,主要是防火墙问题,修复后就可以正常使用。

下一步

  1. 等待服务器重启完成(约 10-15 秒)
  2. 重新尝试 HTTP 推送
  3. 如果还是不行,修复防火墙后使用 SSH