因环境变量导致Git Push无权限

因环境变量导致Git Push无权限

前言

众所周知,Git读取配置文件的优先级(从低到高)依次为:系统级(System)、全局级(Global)、本地级(Local)。当系统未设置“HOME”环境变量的时候,Git会优先读取“USERPROFILE”路径下的“.gitconfig”文件,在WIN中也就是“C:\Users\user\.gitconfig”。而我,因为装了某一个软件导致错误的设置了“HOME”变量,导致Git在错误的变量路径下创建“.ssh”(这里隐藏了另一个大坑)和“.gitconfig”文件,且只读取此处的全局配置。最终,在终端工具中使用ssh -T git@github.com​,提示无权限

接着来说“.ssh”的问题,Git默认会使用自带的SSH工具,该工具也会受到“HOME”环境变量的影响,无法读取到我配置的SSH,导致无权限的问题。

解决方法

我采取的解决办法是通过设置环境变量GIT_CONFIG_GLOBAL​,确保Git优先从用户配置的目录下读取配置环境变量。注意:GIT_CONFIG_GLOBAL​ 指向的是完整路径(含文件名)。虽然Git自带的SSH工具存在问题,会受到影响,但是WIN自带的OpenSSH会优先从“USERPROFILE”路径下读取SSH的配置文件以及私钥。所以我们使用GIT_SSH​,将SSH指向WIN自带的openSSH,其路径为:C:\Windows\System32\OpenSSH\ssh.exe​。

这样配置之后,测试的时候提示Hi Eliauk365! You've successfully authenticated, but GitHub does not provide shell access.​就好了。

除了设置环境变量,还有两种解决方法可以参考,其中一种就是删除“HOME”环境变量,让原来的该怎么样就怎么样就行了,但是这种会导致软件无法使用;另一种就是将错就错,迁移原有配置到“HOME”环境变量所设置的路径下,但是这种不知道后续会不会出先别的问题。

最后

总结一下,问题就是在正常情况下Git无法读取配置文件和SSH私钥,假如没有“HOME”环境变量的影响,且都是默认设置,就不会有这种问题的出现。

夜来南风起,小麦覆陇黄

posted @ 2025-06-05 21:35  冰桃美酒  阅读(19)  评论(0)    收藏  举报