提问人:Binarus 提问时间:11/16/2023 最后编辑:Binarus 更新时间:11/19/2023 访问量:83
在 Git for Windows 2.42 / Git Extensions for Windows 4.2.0 中,我们如何禁用 Git CLI stdin 包装器?
In Git for Windows 2.42 / Git Extensions for Windows 4.2.0, how can we disable the Git CLI stdin wrapper?
问:
我正在使用 Git 和适用于 Windows 的 Git 扩展进行版本控制。我的工作流程的一部分是,我从 Git 扩展中打开 Git bash 以在命令行上工作。我在 Git bash 中经常使用的命令之一是 ,因为远程存储库最多可以通过 SSH 获得。ssh-add
直到今天,这一直有效,没有任何问题。如果我这样做了,我被要求直接在 Git bash 中输入密钥的密码。ssd-add <my-key-id>
在今天早上,我收到了适用于 Windows 的 Git 扩展的更新,即 4.2.0 版,以及适用于 Windows 的 Git 更新,即 2.42.,我愚蠢地接受了这些提议。
结果是我无法再访问远程存储库:遵循命令后,Git bash 中不再要求我输入密码;取而代之的是,会打开一个 GUI 对话框,其中包含一个文本字段,我可以在其中输入密码,标题为“Git Extensions - git CLI stdin wrapper”。现在的问题是这个 git CLI stdin 包装器无法正确处理我的密码;可能是因为密码包含各种特殊字符,包括德语变音符号。无论如何,我再也无法解锁所需的SSH密钥了。ssh-add
我怎样才能阻止这种疯狂?是否可以禁用该 git CLI stdin 包装器,以便我可以再次在命令行输入密码?
似乎我可以通过使用其他SSH二进制文件(等)来解决问题,但我不想这样做。完全不需要那个 git CLI stdin 包装器(直接在 Git bash 中输入密码一直有效),使用另一个 SSH 客户端是愚蠢的(与 Git 捆绑在一起的客户端也一直可靠地工作,我已经在其安全配置中投入了一些不可忽视的工作)。ssh-add
ssh
我也知道我可以通过自己打开 Git bash 而不是从 Git 扩展中打开来解决这个问题。但是,由于我不想在这里解释的不明显原因,这会破坏我当前的工作流程;这将是一个非常烦人的紧急解决方案。
此外,很明显,我不会仅仅因为完全多余的 GUI stdin 包装器以不正确的方式传递它们而更改我的 SSH 密码。
答:
作为中间解决方案,您可以重命名或删除 .如果它不在预期位置,并且未设置环境变量,则将内联询问密码。C:\Program Files (x86)\GitExtensions\GitExtSshAskPass.exe
SSH_ASKPASS
请注意,这适用于所有要求输入密码的地方。但是,这与之前的 (4.1) 行为相同,因为只有在没有控制台或存在输入管道的情况下才会使用。git
SSH_ASKPASS
评论
GitExtSshAskPass
.bashrc
我总是感到困惑,为什么用户来这里抱怨,而不是直接向开发团队提出问题。您可以直接从 Git 扩展报告问题:
...或通过 GitHub https://github.com/gitextensions/gitextensions/issues。
评论
Set SSH_ASKPASS_REQUIRE to value “never” so that it never use the program defined in SSH_ASKPASS (filled by GitExtensions). See https://man.openbsd.org/ssh-add.1
The reason of the change that introduces the regression on your work flow:
Change introducing bad behavior for you https://github.com/gitextensions/gitextensions/pull/11199 The reason is described in https://github.com/gitextensions/gitextensions/pull/11182 (to better handle password managers)
评论