You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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_rsa
    
    如果提示权限错误,就去改密钥文件的权限:右键id_rsa→属性→安全→高级,删掉除了你当前用户之外的所有权限(比如Everyone、Users组),只留你自己的读取权限——SSH对私钥权限要求很严,权限太松会直接拒绝使用。

4. 确认GitLab账户里的公钥没丢

虽然服务器说没收到公钥请求,但还是顺手确认下:登录GitLab→个人设置→SSH密钥,看看你的公钥是不是还在列表里,有没有被误删或者过期。

内容的提问来源于stack exchange,提问作者UHM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 07:50:14