Git配置core.sshcommand不生效,环境变量GIT_SSH_COMMAND可正常工作
解决Git core.sshcommand配置不生效的问题
看起来你遇到的核心问题是用环境变量GIT_SSH_COMMAND能正常工作,但通过git config设置core.sshcommand却没效果,这大概率是配置时的语法问题导致的,我来一步步帮你解决:
1. 先确认当前配置的错误
你执行的配置命令没有给完整的ssh命令加引号,Git只会把第一个单词ssh当作core.sshcommand的值,后面的-i、密钥路径等参数都被忽略了。
你可以先运行这个命令验证:
git config --get core.sshcommand
如果输出只有ssh,那就能确认是这个问题。
2. 正确设置core.sshcommand
需要把整个ssh命令用单引号(或双引号)包裹起来,确保Git把完整的命令串当作配置值:
# 仅对当前仓库生效 git config core.sshcommand 'ssh -i /var/www/level2.lu/www/git_id_rsa -F /dev/null' # 如果想全局生效(所有仓库都用这个配置),加上--global参数 git config --global core.sshcommand 'ssh -i /var/www/level2.lu/www/git_id_rsa -F /dev/null'
3. 验证配置是否生效
设置完成后,再运行git config --get core.sshcommand,如果输出是完整的命令字符串:
ssh -i /var/www/level2.lu/www/git_id_rsa -F /dev/null
就说明配置正确了,此时再执行git ls-remote应该就能正常工作。
4. 额外排查点(如果还是不生效)
- 检查是否有仓库级配置覆盖了全局配置:运行
git config --list --show-origin,查看core.sshcommand的来源,确保你修改的是对应级别的配置。 - 确认没有残留的
GIT_SSH_COMMAND环境变量:虽然你不想用环境变量,但如果它还存在,会优先于core.sshcommand生效,可以用echo $GIT_SSH_COMMAND检查,若有输出,执行unset GIT_SSH_COMMAND清除。
内容的提问来源于stack exchange,提问作者Gunstick
相关产品推荐
相关产品推荐

