WSL环境使用git报错找不到C:\Windows\System32\OpenSSH\ssh.exe如何解决
第一步:检查git的SSH客户端配置
执行以下命令查看git全局配置的SSH客户端路径:git config --global core.sshCommand如果输出为
C:\Windows\System32\OpenSSH\ssh.exe这类Windows路径,执行以下命令修改为WSL自带的Linux SSH客户端:git config --global core.sshCommand /usr/bin/ssh如果是在挂载的Windows盘符(/mnt/c/等路径)下的仓库操作,额外执行以下命令检查仓库本地配置是否覆盖了全局规则:
git config core.sshCommand若返回Windows路径,执行相同的修改命令即可:
git config core.sshCommand /usr/bin/ssh第二步:调整WSL路径优先级(若上一步未解决)
出现该问题的核心原因是WSL默认会将Windows系统的PATH追加到自身PATH中,若Windows的OpenSSH路径优先级高于Linux系统SSH路径,就会出现调用异常。
方案1(局部调整,不影响WSL调用Windows程序):
编辑你的shell配置文件(如果用zsh就修改~/.zshrc,用bash就修改~/.bashrc),在末尾添加如下内容:export PATH="/usr/bin:$PATH"保存后执行
source ~/.zshrc(或对应bash的配置文件)生效。方案2(全局禁用WSL继承Windows PATH):
编辑WSL配置文件/etc/wsl.conf,添加如下配置:[interop]
appendWindowsPath = false
保存后关闭所有WSL窗口,在Windows终端执行wsl --shutdown重启WSL即可生效。验证修复
执行以下命令确认SSH路径正确:which ssh正常输出应为
/usr/bin/ssh,再执行git pull验证操作是否恢复正常。
内容的提问来源于stack exchange,提问作者Jack Lovett

