每次我尝试在我们的一个工作服务器上执行 git push 或 pull 时,都会收到“错误:无法打开显示:”警告,除非我使用 -X 转发登录,在这种情况下会弹出一些丑陋的 90 年代窗口让我输入密码。
是否有任何设置可以抑制此行为?我完全不知所措,在 Google 上找不到任何东西……
编辑: 开启X转发后弹出的窗口如下图所示:
答案1
您可以使用 设置所需的 askpass 命令git config
。相关的配置键名为core.askpass
。
更改方法:git config --global core.askpass /path/to/command
可以使用环境变量覆盖 Git 配置中设置的值GIT_ASKPASS
。
如果core.askpass
没有设置,它首先尝试环境变量中定义的命令SSH_ASKPASS
。后备顺序中的下一个(也是最后一个)是一个简单的内置密码提示。
来源及详情:git-config 文档(搜索core.askpass
)
答案2
这听起来像是你正在使用松树入口程序来输入您的 git 登录密码,其中存在多种变体。 在您的例子中,所选的默认密码似乎是 pinentry-gtk2,这确实非常丑陋。 :)
试试你的运气
ls -l /usr/bin/pinentry*
查看安装了哪些变体。可能有一个二进制文件被符号链接,即“默认”。您可以通过重新链接符号链接来选择另一个 pinentry 程序,尽管这可能会使您的包管理器感到困惑。要查看这是否是实际问题,请删除 /usr/bin/pinentry 符号链接或将其重新链接到 pinentry-curses,看看行为是否发生变化。
有趣的是,我不记得 git 真的使用过 pinentry 程序,但 gnupg 确实使用了。也许你有一些涉及 gpg-agent、SSH 密钥和有效的 GnuPG 通过 pinentry 要求输入密码的设置?
如果您没有权限直接摆弄符号链接,您可以尝试编辑 gpg-agent 配置:
mkdir -p ~/.gnupg # may fail if dir already exists
echo 'pinentry-program /usr/bin/pinentry-curses' >> ~/.gnupg/gpg-agent.conf
这应该指示 gpg-agent 使用基于 cli 的 pinentry-curses 程序。这是一个不太可能的尝试,但值得一试。