93 lines
2.7 KiB
Markdown
93 lines
2.7 KiB
Markdown
|
|
# SSH 连接问题排查
|
|||
|
|
|
|||
|
|
## 问题现象
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
ssh: connect to host 101.43.95.130 port 29418: Connection timed out
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 可能的原因
|
|||
|
|
|
|||
|
|
1. **防火墙阻止了 29418 端口**
|
|||
|
|
2. **Gerrit SSH 服务未正常启动**
|
|||
|
|
3. **网络路由问题**
|
|||
|
|
|
|||
|
|
## 解决方案
|
|||
|
|
|
|||
|
|
### 步骤 1:先添加 SSH 公钥到 Gerrit
|
|||
|
|
|
|||
|
|
即使 SSH 连接暂时有问题,也可以先添加公钥:
|
|||
|
|
|
|||
|
|
1. **在浏览器中**,访问:`http://101.43.95.130:8080/#/settings/ssh-keys`
|
|||
|
|
2. **在 "New SSH key" 输入框中**,粘贴您的公钥:
|
|||
|
|
```
|
|||
|
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDfjHZN+QcoRiE6yzSTi15/6iwa7sHQ6D0hlnnGFmzBiEhix+oPhpLM18SM6qKiTSC3KEIsAtjRMndWFOO/PnSsDtLWnBDxg8HWn1YhjDCz5VaCmMEA/Com8FGQPtSliI+6F+v1OOeaviL7V0iJcvZVPuIUrruNTfsZWOHrFhBrEeNwtrxwXcB3N5Hzw1/2c3AZ//5vPUf63FU0GNnNO8K2dTIJqfe80kprJtWXHGaj2OsV1T065LL24GYe65Hfngo8jf9HL1O1+ZUfNWrgJXKnr6U4cPOwpmuxcVa85OlXpxYOxcXWU20fu/ZgxzcvFYnONfnj2pI10j5ix1M2Vf1Ken5GP0WEHJUYUQ4bILbf1jKZRWqLgh0/nyAPikpcaYboqy3R4ZZjl+dC1JCXCzkmT69AiPzrvBWjlz2ygUwr45xoq7YJqLLjtFYJXf2KTgWczpJyDtWb4gXPJV1GAgaSHOrsswa3vlIQT3aOr0hmK7rKNXEcoySm1QV4GHcalfAybKvz9O9eXWxOlAY1JSzLA6fy8ziB3n+8wyIe44Pomro79m5w4R+C0XbrJ4owEzfnAAe1AcaIgQ4ik78idug0ZFQZ4s1YNYS/oQfDS8ZP5TanAC611ouO3XG1SUn6SkkKzG8ThQDr+igXFnShUrgYXKjLxifAj4wfl/wmg2NhXQ== your_email@example.com
|
|||
|
|
```
|
|||
|
|
3. **点击 "Add"** 按钮保存
|
|||
|
|
|
|||
|
|
### 步骤 2:检查服务器端 SSH 服务
|
|||
|
|
|
|||
|
|
在服务器上检查:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查 Gerrit SSH 服务状态
|
|||
|
|
cd /home/renjianbo/gerrit_install/review_site
|
|||
|
|
bin/gerrit.sh status
|
|||
|
|
|
|||
|
|
# 检查端口是否监听
|
|||
|
|
netstat -tlnp | grep 29418
|
|||
|
|
# 或
|
|||
|
|
ss -tlnp | grep 29418
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤 3:检查防火墙
|
|||
|
|
|
|||
|
|
如果是云服务器,需要确保防火墙开放了 29418 端口:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# CentOS 7
|
|||
|
|
sudo firewall-cmd --permanent --add-port=29418/tcp
|
|||
|
|
sudo firewall-cmd --reload
|
|||
|
|
|
|||
|
|
# 或者检查防火墙状态
|
|||
|
|
sudo firewall-cmd --list-ports
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤 4:临时使用 HTTP 推送(如果 SSH 无法修复)
|
|||
|
|
|
|||
|
|
如果 SSH 连接问题暂时无法解决,可以继续使用 HTTP 方式:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd /d/ttt/test-project
|
|||
|
|
|
|||
|
|
# 确保远程 URL 包含用户名
|
|||
|
|
git remote set-url origin http://renjianbo@101.43.95.130:8080/test-project
|
|||
|
|
|
|||
|
|
# 推送代码
|
|||
|
|
git push origin HEAD:refs/for/master
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 当前建议
|
|||
|
|
|
|||
|
|
1. **先添加 SSH 公钥**到 Gerrit(即使连接有问题,公钥可以先保存)
|
|||
|
|
2. **检查服务器防火墙**是否开放了 29418 端口
|
|||
|
|
3. **如果 SSH 暂时无法修复**,继续使用 HTTP 方式推送代码
|
|||
|
|
|
|||
|
|
## 需要服务器端操作
|
|||
|
|
|
|||
|
|
如果您有服务器访问权限,请执行:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查防火墙
|
|||
|
|
sudo firewall-cmd --list-ports
|
|||
|
|
|
|||
|
|
# 如果 29418 不在列表中,添加它
|
|||
|
|
sudo firewall-cmd --permanent --add-port=29418/tcp
|
|||
|
|
sudo firewall-cmd --reload
|
|||
|
|
|
|||
|
|
# 检查 Gerrit SSH 服务
|
|||
|
|
cd /home/renjianbo/gerrit_install/review_site
|
|||
|
|
bin/gerrit.sh status
|
|||
|
|
```
|
|||
|
|
|