使用Git LFS的仓库执行git push时重复提示SSH密码求助
排查与解决步骤
1. 配置SSH代理自动加载密钥(解决临时生效问题)
编辑~/.ssh/config文件,添加针对GitHub的专属配置,让SSH自动将密钥加入代理并持久化到钥匙串:
Host github.com HostName github.com User git IdentityFile ~/.ssh/你的密钥文件名(比如id_ed25519) AddKeysToAgent yes UseKeychain yes
保存后重启终端,后续密钥会自动加载到代理,无需手动执行ssh-add。
2. 验证Git LFS的远程配置一致性
执行git lfs env查看输出,确认git-lfs/remote.origin.url与仓库的remote.origin.url一致,均为SSH格式(git@github.com:xxx/xxx.git)。如果LFS使用了HTTPS地址,会导致额外的身份验证请求。
3. 开启SSH连接复用(解决大仓库多连接认证问题)
大仓库push时可能建立多个SSH连接,默认配置下每个连接都需要重新认证。在~/.ssh/config中添加全局连接复用配置:
Host * ControlMaster auto ControlPath ~/.ssh/sockets/%r@%h-%p ControlPersist 600
该配置会复用已有SSH连接,避免重复认证。
4. 确认钥匙串已保存SSH密钥密码
打开「钥匙串访问」应用,搜索你的SSH密钥文件名,检查对应的条目是否存在:
- 右键条目选择「显示简介」
- 勾选「允许所有应用访问此项目」
- 确认密码已正确保存,避免每次加载密钥时都需要输入密码
5. 重置仓库的Git与LFS配置
针对问题仓库,执行以下命令重置远程配置,排除局部配置异常:
# 重置远程地址 git config --local remote.origin.url git@github.com:你的用户名/仓库名.git # 重置LFS配置 git lfs uninstall --local git lfs install --local
6. 查看SSH连接详细日志定位问题
执行带调试日志的push命令,观察密钥加载和代理使用情况:
GIT_SSH_COMMAND="ssh -v" git push
重点查看日志中关于agent key的输出,确认是否成功从代理获取密钥,而非每次都重新读取本地密钥文件。
内容的提问来源于stack exchange,提问作者selah
相关产品推荐
相关产品推荐

