4.2 KiB
4.2 KiB
开放 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 等),还需要在云控制台配置:
- 登录云控制台
- 找到安全组配置
- 添加入站规则:
- 协议: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: 端口已开放但仍无法连接
可能原因:
- 云服务器安全组未配置:需要在云控制台配置安全组规则
- Gerrit 服务未启动:检查服务状态
- 端口被其他防火墙阻止:检查是否有其他防火墙软件
排查步骤:
# 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
相关文档
注意事项
- ⚠️ 安全考虑:开放端口后,确保 Gerrit 配置了适当的访问控制
- ⚠️ 云服务器:如果使用云服务器,必须同时配置云控制台的安全组
- ⚠️ 端口冲突:确认端口 29419 没有被其他服务占用
- ✅ 持久化:使用
--permanent参数确保规则在重启后仍然有效