Files
gerrit/开放端口29419说明.md
2025-12-22 17:12:39 +08:00

4.2 KiB
Raw Blame History

开放 Gerrit SSH 端口 29419 指南

问题描述

Gerrit SSH 服务使用端口 29419但防火墙阻止了外部访问导致连接超时

ssh: connect to host 101.43.95.130 port 29419: Connection timed out

解决方案

方法一:使用 firewall-cmd推荐适用于 CentOS 7

如果系统使用 firewalld 管理防火墙:

# 1. 添加端口到防火墙(永久生效)
sudo firewall-cmd --permanent --add-port=29419/tcp

# 2. 重新加载防火墙配置
sudo firewall-cmd --reload

# 3. 验证端口是否已开放
sudo firewall-cmd --list-ports | grep 29419

或者直接运行脚本:

sudo bash 开放端口29419.sh

方法二:使用 iptables

如果系统使用 iptables 管理防火墙:

# 1. 添加 iptables 规则
sudo iptables -I INPUT -p tcp --dport 29419 -j ACCEPT

# 2. 保存规则CentOS 7
sudo iptables-save > /etc/sysconfig/iptables

# 3. 验证规则
sudo iptables -L -n | grep 29419

或者直接运行脚本:

sudo bash 开放端口29419-iptables.sh

方法三:云服务器安全组配置

如果使用云服务器阿里云、腾讯云、AWS 等),还需要在云控制台配置:

  1. 登录云控制台
  2. 找到安全组配置
  3. 添加入站规则
    • 协议TCP
    • 端口29419
    • 0.0.0.0/0或指定 IP 范围)
    • 动作:允许

验证步骤

1. 检查端口监听状态

# 检查 Gerrit 是否在监听端口 29419
netstat -tlnp | grep 29419
# 或
ss -tlnp | grep 29419

应该看到类似输出:

tcp6       0      0 :::29419                :::*                    LISTEN      29768/GerritCodeRev

2. 测试 SSH 连接

从客户端测试连接:

# 测试 SSH 连接
ssh -p 29419 renjianbo@101.43.95.130 gerrit version

如果连接成功,会显示 Gerrit 版本信息。

3. 测试 Git 推送

cd /d/zhini_im_android
git push origin HEAD:refs/for/master

常见问题

Q1: 执行 firewall-cmd 提示 "not running"

原因firewalld 服务未启动

解决

# 启动 firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld

# 然后再执行开放端口命令
sudo firewall-cmd --permanent --add-port=29419/tcp
sudo firewall-cmd --reload

Q2: 端口已开放但仍无法连接

可能原因

  1. 云服务器安全组未配置:需要在云控制台配置安全组规则
  2. Gerrit 服务未启动:检查服务状态
  3. 端口被其他防火墙阻止:检查是否有其他防火墙软件

排查步骤

# 1. 检查 Gerrit 服务状态
cd /home/renjianbo/gerrit_install/review_site
bin/gerrit.sh status

# 2. 检查端口监听
netstat -tlnp | grep 29419

# 3. 检查防火墙规则
sudo firewall-cmd --list-ports
# 或
sudo iptables -L -n | grep 29419

Q3: 如何临时关闭防火墙测试?

注意:仅用于测试,生产环境不推荐!

# 临时关闭 firewalld
sudo systemctl stop firewalld

# 临时关闭 iptables不推荐
sudo iptables -F

测试完成后,记得重新启动防火墙并正确配置规则。

完整操作示例

# 1. 检查当前防火墙状态
sudo firewall-cmd --state

# 2. 查看已开放的端口
sudo firewall-cmd --list-ports

# 3. 添加端口 29419
sudo firewall-cmd --permanent --add-port=29419/tcp

# 4. 重新加载配置
sudo firewall-cmd --reload

# 5. 验证
sudo firewall-cmd --list-ports | grep 29419

# 6. 检查 Gerrit 服务
netstat -tlnp | grep 29419

# 7. 测试连接(从客户端)
ssh -p 29419 renjianbo@101.43.95.130 gerrit version

相关文档

注意事项

  1. ⚠️ 安全考虑:开放端口后,确保 Gerrit 配置了适当的访问控制
  2. ⚠️ 云服务器:如果使用云服务器,必须同时配置云控制台的安全组
  3. ⚠️ 端口冲突:确认端口 29419 没有被其他服务占用
  4. 持久化:使用 --permanent 参数确保规则在重启后仍然有效