git ssh身份验证失败,并显示ssh_askpass:posix_spawn:未知错误

时间:2018-12-05 16:12:46

标签: windows git git-bash scoop-installer

我正在Windows 10 x64上使用安装程序,在此我通过独家安装和管理git,而不是自己下载并执行安装程序。通过PowerShell,我运行了

scoop install git
scoop install openssh
[environment]::setenvironmentvariable('GIT_SSH', (resolve-path (scoop which ssh)), 'USER')

但是,现在,当我尝试在 Git Bash 中运行命令时

git clone git@example.org:vendor/repository.git

或简单

git push/pull

我只能得到

CreateProcessW failed error:193
ssh_askpass: posix_spawn: Unknown error

而不是Git Bash向我询问我的SSH密钥的密码。

我在许多其他Windows 10 x64上使用了相同的设置(通过独家安装的git),并且在那里没有出现问题。因此,我不确定这是怎么回事。我以前没有在同一台机器上安装过git,但是Git Bash运行良好。在完全通过 scoop 重新安装git之前,我已完全卸载了git(并确保重新启动了机器)。

SSH_ASKPASS环境变量包含以下内容(如果相关):

$ echo ${SSH_ASKPASS}
/mingw64/libexec/git-core/git-gui--askpass

不确定该文件夹是指什么(大概是 Git Bash 内部的东西?),因为它显然不像我的机器上那样存在。

更新

单独使用git-with-openssh而不是单独使用gitopenssh时,它可以工作。但是,我没有在其他机器上使用它,所以我仍然想知道为什么它在这里不起作用。

2 个答案:

答案 0 :(得分:1)

我很确定我的回答不会解决OP的原始情况。但是到2020年,似乎存在着类似的问题,但是解决方法不同,这就是我的情况。

部分问题是,现在Windows 10具有its own version of OpenSSH可用,至少在我工作的机器上,似乎默认情况下启用了该选项。

此捆绑的OpenSSH与Git bash不兼容,因此,如果要使用它,则必须强制git使用scoop提供的OpenSSH(来自opensshgit-with-openssh软件包)。这意味着覆盖GIT_SSH环境变量,例如通过向您的.bashrc添加类似以下内容的行:

export GIT_SSH='C:\Users\rogs\scoop\apps\git-with-openssh\current\usr\bin\ssh.exe'

希望有帮助。

答案 1 :(得分:0)

即使这个话题已经很老了,问题仍然存在。我发现只需取消设置环境变量即可消除此错误。

unset SSH_ASKPASS

只需将其放入您的 .bash_profile 和/或您的 .bashrc