在 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?

提问人:Binarus 提问时间:11/16/2023 最后编辑:Binarus 更新时间:11/19/2023 访问量:83

问:

我正在使用 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-addssh

我也知道我可以通过自己打开 Git bash 而不是从 Git 扩展中打开来解决这个问题。但是,由于我不想在这里解释的不明显原因,这会破坏我当前的工作流程;这将是一个非常烦人的紧急解决方案。

此外,很明显,我不会仅仅因为完全多余的 GUI stdin 包装器以不正确的方式传递它们而更改我的 SSH 密码。

git git-bash git-extensions ssh-agent

评论

1赞 ti7 11/17/2023
en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish
0赞 Binarus 11/17/2023
感谢您的链接和 +1,但我无法想象为什么 Git Extension for Windows 和 Git for Windows 开发人员应该有兴趣这样做......
1赞 Philippe 11/17/2023
更改为您引入不良行为 github.com/gitextensions/gitextensions/pull/11199 原因在 github.com/gitextensions/gitextensions/pull/11182 中描述(以更好地处理密码管理器)。我不知道是否有使用 env vars 😕 的解决方法
2赞 Philippe 11/17/2023
尝试将SSH_ASKPASS_REQUIRE设置为值“从不”。查看 man.openbsd.org/ssh-add.1
0赞 Binarus 11/17/2023
@Philippe 非常感谢,+1。我没想到 Git for Windows / Git bash 系统与该级别的 Linux / BSD 变体兼容。这个提示是救命稻草!如果你把你的评论作为答案,我会很乐意接受的。它立即解决了问题。

答:

1赞 SlugFiller 11/17/2023 #1

作为中间解决方案,您可以重命名或删除 .如果它不在预期位置,并且未设置环境变量,则将内联询问密码。C:\Program Files (x86)\GitExtensions\GitExtSshAskPass.exeSSH_ASKPASS

请注意,这适用于所有要求输入密码的地方。但是,这与之前的 (4.1) 行为相同,因为只有在没有控制台或存在输入管道的情况下才会使用。gitSSH_ASKPASS

评论

0赞 Binarus 11/17/2023
非常感谢,并投了赞成票。但是,我可能会给 Philippe 答案(如果他把他的评论作为答案),因为他的解决方案稍微干净一些,因为它不需要操作程序目录。只需设置一个官方记录的环境变量就是一个非常优雅和安全的问题解决方案:-)
0赞 SlugFiller 11/18/2023
虽然更简洁,但设置环境变量的缺点是必须为每个会话执行此操作。因为在为 shell 生成环境时,系统存储的环境变量会被覆盖。这就是为什么我提供了一个只需要做一次的解决方案。P.S. 即使您更喜欢使用 shell(可以将其作为一个选项),这里真正的错误也在 .它应该绝对处理任何 Unicode 字符。您应该发布一个问题,就不起作用的特定字符提供一些提示。GitExtSshAskPass
0赞 Binarus 11/19/2023
我不需要每次都设置环境变量,因为我已经把它放在了 .这样,每次启动 Git bash 时都会自动设置它,无论是否来自 Git 扩展。关于错误位置,你当然是对的;但是,我已经浪费了太多时间在没有人处理过的错误报告上。虽然这是其他项目,但它使我不愿意在错误报告上投入更多时间。.bashrc
0赞 Binarus 11/23/2023
非常感谢您参与错误报告,并感谢您对调试问题提出非常有用的建议。对于其他人,错误报告(包括工作解决方案)在这里:github.com/gitextensions/gitextensions/issues/11379
1赞 RussKie 11/17/2023 #2

我总是感到困惑,为什么用户来这里抱怨,而不是直接向开发团队提出问题。您可以直接从 Git 扩展报告问题:enter image description here

...或通过 GitHub https://github.com/gitextensions/gitextensions/issues

评论

0赞 Binarus 11/17/2023
总的来说,你是对的,因此我会慷慨地将你的建议视为答案并投赞成票。然而,如果你在许多错误报告中投入大量时间,只是为了看到没有人关心它们,你就会低估多年来积累的挫败感。我个人受到这种挫败感的影响,希望我能和孩子们一起玩,而不是那样浪费我的时间。因此,对我来说,错误报告已成为极端紧急情况下的最后手段。
0赞 Binarus 11/17/2023
另外,在这种情况下,我真的需要一个即时的解决方案,而社区几乎一如既往地提供了它。我敢打赌,需要几个月,甚至几年的时间,直到 Git CLI stdin 包装器中的错误得到修复。我等不了那么久了;我真的需要立即访问我正在使用的存储库。
0赞 Philippe 11/19/2023
@Binarus我不是社区,我是 GitExtensions 开发人员,我完全同意,如果您提出问题,您会更快地回答。幸运的是,我有时会浪费时间查看 git 问题(当我不浪费时间开发 GitExtensions 时)而不是和我的孩子一起玩。我不知道谁浪费了更多的时间来帮助别人......
0赞 Binarus 11/22/2023
好吧,你已经说服了我,看看 github.com/gitextensions/gitextensions/issues/11379 期待这是否是浪费时间:-)(承认很难重现这个问题,因为我无法提供引发问题的实际密码;另请参阅我对你的答案的评论)
0赞 Binarus 11/23/2023
好吧,你是对的。对我的错误报告的反应非常令人满意。就建议和答复的质量以及他们提供进一步的问题、建议甚至工作修复所需的时间而言,情况确实如此。考虑到我过去在其他项目中的糟糕经历,我不会预料到这一点。经验教训 - 每个项目都有自己的文化,从现在开始,我将再次报告错误,至少对那些在这方面还没有让我失望的项目。
0赞 RussKie 11/25/2023
我很高兴听到它。当错误和问题直接提交给我们时,我们更容易做出反应和处理。
1赞 Philippe 11/19/2023 #3

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)

评论

0赞 Binarus 11/22/2023
Thanks again, +1 and accepted of course. Regarding the bug report, you have convinced me. However, in that special case, I am afraid that I'll be asked to provide the passphrase so that the developers can reproduce the problem. Unfortunately, I can't do that, and right now, I don't have the time to search for other passphrases that raise the same problem (although I believe that it wouldn't take long to find one). Hence, I'll probably report the bug, but I can't provide a passphrase to reproduce the problem. We'll see if that will become a good or a bad experience :-)