190 lines
4.2 KiB
Markdown
190 lines
4.2 KiB
Markdown
# 开放 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` 参数确保规则在重启后仍然有效
|
||
|
||
|