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

Git for Windows SSH凭证访问Gitlab失效提示输入密码问题求助

排查&解决步骤

1. 先打印SSH连接日志定位问题

执行带调试信息的连通性测试命令,直接定位异常环节:
ssh -vT git@gitlab.local
重点查看输出中debug1: Offering public key:开头的行,确认是否有读取你使用的~/.ssh/id_rsa_new密钥:

  • 若未出现该密钥路径,说明SSH连接时未匹配到对应密钥
  • 若出现但后续返回密钥无效,需检查密钥权限或Gitlab公钥配置

2. 优先配置SSH config固定密钥映射(最稳妥方案,无需每次手动ssh-add)

你使用了非默认路径的密钥,SSH默认只会自动读取id_rsa、id_ed25519等标准命名的密钥,通过配置config文件可永久绑定域名和对应密钥:

  1. 执行vim ~/.ssh/config(或用其他文本编辑器打开该文件,不存在则新建)
  2. 写入以下配置:
Host gitlab.local
  HostName gitlab.local
  User git
  IdentityFile ~/.ssh/id_rsa_new
  IdentitiesOnly yes
  1. 修正配置文件权限,SSH对权限要求严格,权限过高会直接拒绝使用:
    chmod 600 ~/.ssh/config && chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_rsa_new

3. 核对Gitlab公钥配置

执行cat ~/.ssh/id_rsa_new.pub,将输出的公钥内容和Gitlab账号中添加的公钥做对比,确认没有多复制空格、换行或者漏字符的情况。

4. 配置SSH密钥持久生效(可选,解决重启Git Bash后ssh-add失效问题)

Git for Windows默认不会持久保存ssh-add的密钥,每次重启终端都需要重新执行add命令,可在~/.bashrc文件中追加以下内容实现开机自动加载:

env=~/.ssh/agent.env

agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }

agent_start () {
    (umask 077; ssh-agent >| "$env")
    . "$env" >| /dev/null ; }

agent_load_env

agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)

if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
    agent_start
    ssh-add ~/.ssh/id_rsa_new
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
    ssh-add ~/.ssh/id_rsa_new
fi

unset env

保存后重启Git Bash即可自动加载密钥。

效果验证

所有配置完成后执行ssh -T git@gitlab.local,返回Welcome to GitLab, @你的用户名!即配置生效,后续执行Git命令不会再弹出密码输入提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:30:01