当使用 `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>` ## 小贴士 - **换电脑/重装系统时:** 只需重新走一遍这套流程 - **密钥管理:** 建议为不同设备生成不同的密钥对 - **安全性:** 私钥文件请妥善保管,不要泄露 - **路径问题:** 注意检查实际的用户目录路径