Files
gerrit/配置SSH密钥指南.md
2025-12-22 17:12:39 +08:00

196 lines
4.1 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 密钥配置指南
## 在 Windows 上配置 SSH 密钥
### 步骤 1生成 SSH 密钥(如果还没有)
在 Git Bash 中执行:
```bash
# 检查是否已有 SSH 密钥
ls -la ~/.ssh
# 如果没有 id_rsa 或 id_ed25519生成新密钥
ssh-keygen -t ed25519 -C "your_email@example.com"
# 或者使用 RSA如果 ed25519 不支持)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
```
**提示**
- 按回车使用默认路径:`/c/Users/Administrator/.ssh/id_ed25519`
- 可以设置密码(推荐)或直接回车留空
### 步骤 2查看公钥内容
```bash
# 查看公钥ed25519
cat ~/.ssh/id_ed25519.pub
# 或RSA
cat ~/.ssh/id_rsa.pub
```
**复制整个公钥内容**(从 `ssh-ed25519``ssh-rsa` 开始到邮箱结束)
### 步骤 3将公钥添加到 Gerrit
1. **登录 Gerrit**
- 访问:`http://101.43.95.130:8080`
- 使用您的账号登录
2. **进入 SSH 公钥设置**
- 点击右上角用户名 → "Settings"
- 或直接访问:`http://101.43.95.130:8080/#/settings/ssh-keys`
3. **添加 SSH 公钥**
- 点击 "Add Key" 或 "+" 按钮
- 粘贴刚才复制的公钥内容
- 点击 "Add" 保存
### 步骤 4修复 known_hosts删除旧密钥
```bash
# 删除旧的 Gerrit 主机密钥
ssh-keygen -R [101.43.95.130]:29418
# 或者手动编辑 known_hosts 文件
# 删除包含 101.43.95.130:29418 的行
notepad ~/.ssh/known_hosts
```
### 步骤 5测试 SSH 连接
```bash
# 测试 SSH 连接(会提示接受新密钥)
ssh -p 29418 admin@101.43.95.130
# 输入 yes 接受新的主机密钥
# 如果配置正确,应该能看到 Gerrit 命令提示符
```
### 步骤 6配置 Git 使用 SSH
```bash
cd /d/zhini/zhini_im
# 删除旧的 HTTP 远程仓库
git remote remove gerrit
# 添加 SSH 远程仓库
git remote add gerrit ssh://admin@101.43.95.130:29418/zhini_im
# 验证
git remote -v
```
### 步骤 7推送代码
```bash
# 推送代码
git push gerrit HEAD:refs/heads/master
# 或推送到评审队列
git push gerrit HEAD:refs/for/master
```
## 完整操作流程
### 在 Git Bash 中执行:
```bash
# 1. 生成 SSH 密钥(如果还没有)
ssh-keygen -t ed25519 -C "admin@example.com"
# 按回车使用默认路径和密码
# 2. 查看公钥
cat ~/.ssh/id_ed25519.pub
# 3. 复制公钥内容,然后:
# - 访问 http://101.43.95.130:8080/#/settings/ssh-keys
# - 点击 "Add Key"
# - 粘贴公钥
# - 保存
# 4. 删除旧的 known_hosts 条目
ssh-keygen -R [101.43.95.130]:29418
# 5. 测试 SSH 连接
ssh -p 29418 admin@101.43.95.130
# 输入 yes 接受新密钥
# 如果成功,输入 exit 退出
# 6. 配置 Git 远程仓库
cd /d/zhini/zhini_im
git remote remove gerrit
git remote add gerrit ssh://admin@101.43.95.130:29418/zhini_im
# 7. 推送代码
git push gerrit HEAD:refs/heads/master
```
## 常见问题
### Q: 提示 "Permission denied (publickey)"
**A:** 可能的原因:
1. 公钥未添加到 Gerrit → 检查 Settings → SSH Keys
2. 用户名错误 → 使用注册时的用户名
3. 密钥路径不对 → 检查 `~/.ssh/` 目录
### Q: 提示 "Host key verification failed"
**A:** 执行:
```bash
ssh-keygen -R [101.43.95.130]:29418
ssh -p 29418 admin@101.43.95.130 # 接受新密钥
```
### Q: 如何查看已添加的 SSH 密钥?
**A:** 访问:`http://101.43.95.130:8080/#/settings/ssh-keys`
### Q: 如何测试 SSH 连接?
**A:**
```bash
ssh -p 29418 admin@101.43.95.130 gerrit version
```
如果配置正确,应该显示 Gerrit 版本信息。
## SSH vs HTTP 对比
### SSH 方式
- ✅ 更安全
- ✅ 不需要每次输入密码
- ✅ 支持更多 Gerrit 命令
- ❌ 需要配置密钥
### HTTP 方式
- ✅ 配置简单
- ✅ 不需要密钥
- ❌ 每次推送可能需要认证(开发模式下不需要)
## 验证配置
### 测试 SSH 连接
```bash
# 测试连接
ssh -p 29418 admin@101.43.95.130 gerrit version
# 应该显示:
# gerrit version 3.9.0
```
### 测试 Git 推送
```bash
cd /d/zhini/zhini_im
git push gerrit HEAD:refs/heads/master
```
如果成功,应该能看到推送进度和成功消息。