Git配置SSH URL却自动切换为HTTPS的问题求助
1. 检查Git全局/系统配置是否强制替换SSH为HTTPS
Git的url.<base>.insteadOf配置会自动将指定URL格式替换为另一种,如果存在url.https://github.com/.insteadOf git@github.com:,就会把SSH地址转成HTTPS,导致需要输入用户名密码。
- 查看全局配置:
git config --global --list | grep insteadOf - 查看系统级配置(Linux/macOS需加sudo):
git config --system --list | grep insteadOf
如果查到对应配置,执行以下命令删除:
# 删除全局配置 git config --global --unset url.https://github.com/.insteadOf # 删除系统级配置(需sudo) sudo git config --system --unset url.https://github.com/.insteadOf
2. 检查并清除Git凭据管理器中的HTTPS凭据
如果之前用过HTTPS方式访问GitHub,凭据管理器可能缓存了HTTPS登录信息,导致Git自动切换到HTTPS协议。
- 查看当前凭据管理器:
git config --global credential.helper - 清除GitHub的HTTPS凭据:
- macOS(使用osxkeychain):
git credential-osxkeychain erase # 依次输入以下内容,每输完一行按回车: host=github.com protocol=https - Windows(使用credential-manager-core):
git credential-manager-core erase # 依次输入以下内容,每输完一行按回车: host=github.com protocol=https - Linux(使用libsecret):打开系统密钥管理工具,找到GitHub的HTTPS相关凭据并删除。
- macOS(使用osxkeychain):
3. 测试SSH连接是否正常
先确认SSH密钥本身能正常连接GitHub,排除密钥或网络拦截问题:
ssh -T git@github.com
如果输出Hi [你的用户名]! You've successfully authenticated, but GitHub does not provide shell access.,说明SSH连接正常;如果连接失败,继续下一步。
4. 规避网络端口拦截(改用443端口走SSH)
部分网络环境(公司防火墙、VPN)会拦截22端口的SSH流量,此时可以改用GitHub的443端口进行SSH连接:
在~/.ssh/config(Linux/macOS)或C:\Users\<你的用户名>\.ssh\config(Windows)中添加以下内容:
Host github.com Hostname ssh.github.com Port 443
保存后再次测试ssh -T git@github.com,确认连接成功后再尝试clone/pull操作。
5. 确认仓库本地配置未被篡改
直接执行命令确认远程地址:
git config remote.origin.url
确保输出是git@github.com:G******/app-****.git,如果不是,重新设置:
git remote set-url origin git@github.com:G******/app-****.git
6. 检查环境变量影响
查看是否有环境变量干扰Git的SSH行为:
# Linux/macOS echo $GIT_SSH echo $GIT_CONFIG # Windows(PowerShell) echo $env:GIT_SSH echo $env:GIT_CONFIG
如果输出非空且指向异常的脚本或配置文件,取消对应的环境变量设置。
内容的提问来源于stack exchange,提问作者Pablo gdcr

