102 lines
2.2 KiB
Markdown
102 lines
2.2 KiB
Markdown
|
|
当使用 `git clone` 遇到 `Permission denied` 或一直提示输入密码时,通常是因为本地没有配置 SSH 密钥。请按以下步骤操作:
|
|
|
|
## 1. 检查并生成 SSH 密钥
|
|
|
|
### 检查现有密钥
|
|
|
|
```bash
|
|
ls -al ~/.ssh
|
|
```
|
|
|
|
查看是否有 `id_ed25519` 或 `id_rsa` 等文件。
|
|
|
|
### 生成新密钥
|
|
|
|
```bash
|
|
ssh-keygen -t ed25519 -C "your_email@example.com"
|
|
```
|
|
|
|
**注意:**
|
|
|
|
- 执行后全程按回车键即可
|
|
- 不要随意输入其他字符作为文件名
|
|
- 如果使用自定义用户目录,路径会是 `/personal/你的用户名/.ssh/id_ed25519`
|
|
|
|
## 2. 获取公钥内容
|
|
|
|
```bash
|
|
cat ~/.ssh/id_ed25519.pub
|
|
```
|
|
|
|
**关键步骤:**
|
|
|
|
- 打印出以 `ssh-ed25519` 开头的公钥内容
|
|
- 完整复制整行内容(包括开头和结尾)
|
|
- 如果路径不同,请使用实际路径
|
|
|
|
## 3. 添加公钥到远程 Git 服务器
|
|
|
|
### 操作步骤:
|
|
|
|
1. 登录公司的 Git 平台(如 GitLab、Gitea 等)
|
|
2. 进入个人设置 -> **SSH Keys (SSH 公钥)**
|
|
3. 将第2步复制的整行内容粘贴进去
|
|
4. 保存设置
|
|
|
|
## 4. 启动代理并加载私钥
|
|
|
|
```bash
|
|
eval "$(ssh-agent -s)"
|
|
ssh-add ~/.ssh/id_ed25519
|
|
```
|
|
|
|
**注意事项:**
|
|
|
|
- 如果使用自定义路径,需要指定完整绝对路径
|
|
- 例如:`/personal/donghongzhi/.ssh/id_ed25519`
|
|
- 如果遇到代理连接问题,先执行 `eval "$(ssh-agent -s)"`
|
|
|
|
## 5. 测试与克隆
|
|
|
|
### 测试连接(可选)
|
|
|
|
```bash
|
|
ssh -T git@<公司Git服务器IP>
|
|
```
|
|
|
|
### 正常拉取代码
|
|
|
|
```bash
|
|
git clone git@<公司Git服务器IP>:<项目路径>.git
|
|
```
|
|
|
|
## 常见问题处理
|
|
|
|
### 问题1:代理连接失败
|
|
|
|
**错误信息:** `Could not open a connection to your authentication agent`
|
|
|
|
**解决方案:**
|
|
|
|
```bash
|
|
eval "$(ssh-agent -s)"
|
|
```
|
|
|
|
### 问题2:权限被拒绝
|
|
|
|
**错误信息:** `Permission denied (publickey)`
|
|
|
|
**排查步骤:**
|
|
|
|
1. 确认公钥已正确添加到Git服务器
|
|
2. 检查私钥是否已加载:`ssh-add -l`
|
|
3. 验证SSH配置:`ssh -v git@<服务器IP>`
|
|
|
|
## 小贴士
|
|
|
|
- **换电脑/重装系统时:** 只需重新走一遍这套流程
|
|
- **密钥管理:** 建议为不同设备生成不同的密钥对
|
|
- **安全性:** 私钥文件请妥善保管,不要泄露
|
|
- **路径问题:** 注意检查实际的用户目录路径
|