# 因环境变量导致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”环境变量的影响,且都是默认设置,就不会有这种问题的出现。 夜来南风起,小麦覆陇黄 Loading... # 因环境变量导致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”环境变量的影响,且都是默认设置,就不会有这种问题的出现。 夜来南风起,小麦覆陇黄 最后修改:2025 年 06 月 05 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 谢谢你,我的宝。