终于搞定了!Git拉取代码时权限被拒绝的问题解决实录
昨天在拉取公司GitLab仓库代码时,突然遇到了"Permission denied (publickey)"的错误提示。作为一名工作3年的Java开发,这个问题折腾了我整整3个小时才解决,现把完整解决过程分享给大家。
一、问题现象
执行`git clone git@gitlab.com:project/repo.git`命令时,控制台报错:
```
Permission denied (publickey).
fatal: Could not read from remote repository.
```
这个问题很典型,根本原因是Git服务器无法识别我的SSH公钥,说白了就是"认不出我是谁"。
二、排查步骤
- **检查SSH密钥是否存在**
```bash
ls -al ~/.ssh
```
发现目录下已有`id_rsa`和`id_rsa.pub`文件。
- **测试SSH连接**
```bash
ssh -T git@gitlab.com
```
仍然提示"Permission denied"
- **检查GitLab公钥配置**
登录GitLab查看`Settings -> SSH Keys`,发现公钥已正确配置。奇怪的是上周还能正常使用!
三、终于找到问题根源
经过反复排查,发现是因为最近升级了Git客户端版本,新版本默认使用`ed25519`算法生成密钥,而公司GitLab服务器用的还是老旧版本,只支持`rsa`算法。
**解决方案:**
- 重生成RSA密钥:
```bash
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
```
-
将新生成的公钥重新添加到GitLab
-
更新本地SSH配置(关键步骤!)
```bash
vim ~/.ssh/config
添加:
Host gitlab.com
HostName gitlab.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
```
四、验证解决方案
再次执行`git clone`命令,这次终于成功拉取代码!测试SSH连接也显示:
```
Welcome to GitLab, @your_username!
```
这次踩坑经历让我深刻认识到:
-
不要盲目升级工具链
-
遇到问题要系统性排查
-
SSH配置文件的妙用
如果大家在Git权限方面还有其他问题,欢迎在评论区交流讨论~ 觉得有用请点赞收藏!