101 lines
3.1 KiB
Markdown
101 lines
3.1 KiB
Markdown
# SSH 公钥认证问题排查
|
||
|
||
## 问题现象
|
||
|
||
```
|
||
renjianbo@101.43.95.130: Permission denied (publickey).
|
||
fatal: Could not read from remote repository.
|
||
```
|
||
|
||
## 好消息
|
||
|
||
✅ **SSH 连接已建立**(不再是连接超时),说明防火墙已修复!
|
||
|
||
❌ **公钥认证失败**,需要检查公钥配置。
|
||
|
||
## 可能的原因
|
||
|
||
1. **公钥没有正确添加到 Gerrit**
|
||
2. **公钥格式问题**
|
||
3. **用户名不匹配**
|
||
4. **SSH 密钥路径问题**
|
||
|
||
## 解决方案
|
||
|
||
### 步骤 1:确认公钥已添加到 Gerrit
|
||
|
||
1. **打开浏览器**,访问:`http://101.43.95.130:8080/#/settings/ssh-keys`
|
||
2. **检查**您的公钥是否在列表中,状态为 "Valid"
|
||
3. **如果没有**,请添加您的完整公钥:
|
||
```
|
||
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
|
||
```
|
||
|
||
### 步骤 2:检查 SSH 密钥路径
|
||
|
||
在您的本地电脑上执行:
|
||
|
||
```bash
|
||
# 检查 SSH 密钥是否存在
|
||
ls -la ~/.ssh/id_rsa*
|
||
|
||
# 如果密钥文件不存在,重新生成
|
||
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
|
||
```
|
||
|
||
### 步骤 3:使用 SSH 代理(如果密钥有密码)
|
||
|
||
如果您的 SSH 密钥设置了密码,需要启动 SSH 代理:
|
||
|
||
```bash
|
||
# 启动 SSH 代理
|
||
eval $(ssh-agent -s)
|
||
|
||
# 添加密钥
|
||
ssh-add ~/.ssh/id_rsa
|
||
```
|
||
|
||
### 步骤 4:使用详细模式测试连接
|
||
|
||
```bash
|
||
# 使用详细模式查看具体错误
|
||
ssh -v -p 29418 renjianbo@101.43.95.130 gerrit version
|
||
```
|
||
|
||
查看输出中的错误信息,特别是:
|
||
- 是否尝试使用正确的密钥文件
|
||
- 服务器是否接受密钥
|
||
|
||
### 步骤 5:检查用户名
|
||
|
||
确保 Gerrit 中的用户名是 `renjianbo`。可以访问:
|
||
`http://101.43.95.130:8080/#/settings/profile`
|
||
|
||
查看您的 Username。
|
||
|
||
### 步骤 6:尝试使用 Account ID
|
||
|
||
如果用户名有问题,可以尝试使用 Account ID:
|
||
|
||
```bash
|
||
# 查看您的 Account ID(在 Settings → Profile 页面)
|
||
# 假设是 1000001,使用:
|
||
ssh -p 29418 1000001@101.43.95.130 gerrit version
|
||
```
|
||
|
||
## 快速检查清单
|
||
|
||
- [ ] 公钥已添加到 Gerrit(`http://101.43.95.130:8080/#/settings/ssh-keys`)
|
||
- [ ] 公钥状态显示为 "Valid"
|
||
- [ ] SSH 密钥文件存在(`~/.ssh/id_rsa`)
|
||
- [ ] 用户名正确(`renjianbo`)
|
||
- [ ] 防火墙已开放 29418 端口(✅ 已完成)
|
||
|
||
## 如果还是不行
|
||
|
||
请提供:
|
||
1. `ssh -v -p 29418 renjianbo@101.43.95.130 gerrit version` 的完整输出
|
||
2. Gerrit SSH Keys 页面的截图
|
||
3. 您的 Gerrit Username(Settings → Profile)
|
||
|