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

190 lines
4.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 开放 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` 参数确保规则在重启后仍然有效