9

我在 Windows 10 x64 上使用设置,通过 scoop 安装和管理 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 上使用相同的设置(通过 scoop 安装的 git),并且没有出现任何问题。所以我不确定这个出了什么问题。我之前在同一台机器上安装了 git 而没有使用 scoop 并且 Git Bash 运行良好。在通过scoop重新安装之前,我完全卸载了 git(并且还重新启动了机器,只是为了确定)。

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

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

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

更新

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

4

2 回答 2

2

我很确定我的回答没有解决 OP 的原始案例。但截至 2020 年,似乎存在类似的问题,但采用不同的解决方法,这就是我的情况。

部分问题是,现在 Windows 10 有自己的 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'

希望能帮助到你。

于 2020-07-10T10:35:45.530 回答
1

即使这个话题已经很老了,问题仍然存在。我发现它足以简单地取消设置环境变量来摆脱这个错误。

unset SSH_ASKPASS

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

于 2021-06-18T12:18:41.820 回答