使用没有 X11 转发的 git

Posted

技术标签:

【中文标题】使用没有 X11 转发的 git【英文标题】:Using git without X11 forwarding 【发布时间】:2015-04-29 13:08:21 【问题描述】:

当我尝试在远程机器上使用 git(通过 ssh)时,它抱怨无法连接到我的显示器。由于我在不同机器的屏幕环境中使用此 ssh 连接,因此无法使用 X11 转发。但是,我不需要任何图形界面来输入我的密码。

命令:

$ git pull

连接本地主机端口 6010:连接被拒绝

(gnome-ssh-askpass:7316): Gtk-WARNING **: 无法打开显示: 本地主机:36.0

版本:

$ git --version

git 版本 1.7.1

我怎样才能在这里解决图形连接的需求?

【问题讨论】:

如果您在该机器上执行没有 git 的 ssh 命令会发生什么? 这是可能的,我被要求在终端输入密码 【参考方案1】:

请阅读gitcredentials(7)手册页(您可以运行git help credentials在本地阅读)。

它解释了 Git 如何管理获取您的凭据的问题。

也就是说,GIT_ASKPASS 环境变量的用法您可能会感兴趣。

或者,您可以允许您的 SSH 客户端将连接转发到您的本地代理(保存您的密钥的东西),以便在远程会话中运行的 Git 可以使用相同的身份。当然,只有在适用的情况下才使用它(即身份相同)。在这种情况下,SSH 甚至不会尝试询问密码,因为它将由代理提供服务。阅读ssh_config(5) 手册页并查找ForwardAgent 配置选项。

重申一下,问题的根源似乎在于 SSH 需要询问您的凭据,而您必须确保它不会。因此,解决方案可能就像在远程会话中运行 ssh-agentssh-add 一样简单,在运行 Git 之前为其添加必要的身份,或者只是确保与获取 SSH 凭据相关的环境变量和 Git 配置设置具有有意义的值。

【讨论】:

git 帮助凭证给了我:没有手动输入 gitcredentials。环境变量 GIT_ASKPASS 不存在/为空。 好的,我上网看了一遍。致电export SSH_ASKPASS=""; git pull 即可解决问题。

以上是关于使用没有 X11 转发的 git的主要内容,如果未能解决你的问题,请参考以下文章

使用最后一次 CentOS CLEAN 安装设置 X11 转发的完整教程是啥?

“通道 0 上的 X11 转发请求失败”

如何进行简单的 SSH x11 转发

OS X 10.12.3 和 X11 转发到 ubuntu 的问题

vscode集成终端如何开启x11转发?

如何在 WSL2 上设置工作 X11 转发 [关闭]