Files
gerrit/SSH公钥认证问题排查.md
2025-12-22 17:12:39 +08:00

101 lines
3.1 KiB
Markdown
Raw 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.
# 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 UsernameSettings → Profile