Git操作GitLab时不再使用SSH密钥,始终要求输入密码的问题
问题原因及解决办法
说白了就是Git当前用的SSH客户端(自带的OpenSSH)没正确加载你的SSH密钥,而Windows系统自带的SSH能正常读取密钥,才出现两种环境下的差异。服务器日志没公钥请求,说明Git调用的SSH根本没发送公钥,大概率是找不到密钥、没加载密钥,或者密钥权限不合法。
具体排查&修复步骤
1. 换用Windows系统自带的SSH(最快解决)
Git默认可能用自己带的SSH,你可以直接让Git用那个能正常工作的系统SSH:
先查当前Git用的SSH路径:
git config --global core.sshCommand
如果是空的或者指向Git目录下的ssh.exe,就改成系统SSH的路径:
git config --global core.sshCommand "C:\Windows\System32\OpenSSH\ssh.exe"
改完再试push/pull,应该就不用输密码了。
2. 检查远程仓库URL是不是SSH格式
别漏了这个!有时候不小心把远程地址改成HTTPS了,肯定要输密码。查一下:
git remote -v
如果看到是https://xxx.gitlab.com/xxx/xxx.git这种,换成SSH格式:
git remote set-url origin git@xxx.gitlab.com:xxx/xxx.git
把地址换成你自己的仓库地址就行。
3. 让Git自带的SSH能读到密钥(如果非要用自带的)
如果不想换系统SSH,就得搞定自带SSH的密钥加载问题:
- 打开Git Bash,先启动ssh-agent:
eval $(ssh-agent -s) - 把你的私钥加进去:
如果提示权限错误,就去改密钥文件的权限:右键ssh-add ~/.ssh/id_rsaid_rsa→属性→安全→高级,删掉除了你当前用户之外的所有权限(比如Everyone、Users组),只留你自己的读取权限——SSH对私钥权限要求很严,权限太松会直接拒绝使用。
4. 确认GitLab账户里的公钥没丢
虽然服务器说没收到公钥请求,但还是顺手确认下:登录GitLab→个人设置→SSH密钥,看看你的公钥是不是还在列表里,有没有被误删或者过期。
内容的提问来源于stack exchange,提问作者UHM
相关产品推荐
相关产品推荐

