Files
gerrit/开放端口29419说明.md

190 lines
4.2 KiB
Markdown
Raw Normal View History

2025-12-22 17:12:39 +08:00
# 开放 Gerrit SSH 端口 29419 指南
## 问题描述
Gerrit SSH 服务使用端口 29419但防火墙阻止了外部访问导致连接超时
```
ssh: connect to host 101.43.95.130 port 29419: Connection timed out
```
## 解决方案
### 方法一:使用 firewall-cmd推荐适用于 CentOS 7
如果系统使用 `firewalld` 管理防火墙:
```bash
# 1. 添加端口到防火墙(永久生效)
sudo firewall-cmd --permanent --add-port=29419/tcp
# 2. 重新加载防火墙配置
sudo firewall-cmd --reload
# 3. 验证端口是否已开放
sudo firewall-cmd --list-ports | grep 29419
```
或者直接运行脚本:
```bash
sudo bash 开放端口29419.sh
```
### 方法二:使用 iptables
如果系统使用 `iptables` 管理防火墙:
```bash
# 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
```
或者直接运行脚本:
```bash
sudo bash 开放端口29419-iptables.sh
```
### 方法三:云服务器安全组配置
如果使用云服务器阿里云、腾讯云、AWS 等),还需要在云控制台配置:
1. **登录云控制台**
2. **找到安全组配置**
3. **添加入站规则**
- 协议TCP
- 端口29419
-0.0.0.0/0或指定 IP 范围)
- 动作:允许
## 验证步骤
### 1. 检查端口监听状态
```bash
# 检查 Gerrit 是否在监听端口 29419
netstat -tlnp | grep 29419
# 或
ss -tlnp | grep 29419
```
应该看到类似输出:
```
tcp6 0 0 :::29419 :::* LISTEN 29768/GerritCodeRev
```
### 2. 测试 SSH 连接
从客户端测试连接:
```bash
# 测试 SSH 连接
ssh -p 29419 renjianbo@101.43.95.130 gerrit version
```
如果连接成功,会显示 Gerrit 版本信息。
### 3. 测试 Git 推送
```bash
cd /d/zhini_im_android
git push origin HEAD:refs/for/master
```
## 常见问题
### Q1: 执行 firewall-cmd 提示 "not running"
**原因**firewalld 服务未启动
**解决**
```bash
# 启动 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. **端口被其他防火墙阻止**:检查是否有其他防火墙软件
**排查步骤**
```bash
# 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: 如何临时关闭防火墙测试?
**注意**:仅用于测试,生产环境不推荐!
```bash
# 临时关闭 firewalld
sudo systemctl stop firewalld
# 临时关闭 iptables不推荐
sudo iptables -F
```
测试完成后,记得重新启动防火墙并正确配置规则。
## 完整操作示例
```bash
# 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 安装使用指南.md](./Gerrit安装使用指南.md)
- [SSH连接问题排查.md](./SSH连接问题排查.md)
- [从码云推送到Gerrit指南.md](./从码云推送到Gerrit指南.md)
## 注意事项
1. ⚠️ **安全考虑**:开放端口后,确保 Gerrit 配置了适当的访问控制
2. ⚠️ **云服务器**:如果使用云服务器,必须同时配置云控制台的安全组
3. ⚠️ **端口冲突**:确认端口 29419 没有被其他服务占用
4.**持久化**:使用 `--permanent` 参数确保规则在重启后仍然有效