git产生Gtk-WARNING:无法打开显示

Posted

技术标签:

【中文标题】git产生Gtk-WARNING:无法打开显示【英文标题】:git produces Gtk-WARNING: cannot open display 【发布时间】:2013-04-11 06:34:20 【问题描述】:

我一直在通过我没有管理员权限的机器上的命令行远程处理我的项目,在运行 git push origin master 后,我收到以下错误消息:

(gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display:

我的.git/config 文件有以下内容:

    [core]
       repositoryformatversion = 0
       filemode = true
       bare = false
       logallrefupdates = true 
    [remote "origin"]
       fetch = +refs/heads/*:refs/remotes/origin/*
       url = https://username@github.com/username/repository.git 
    [branch "master"]
       remote = origin
       merge = refs/heads/master

我之前收到了 403 错误。在评论 here 之后,我将用户名放在远程 URL 中的 @ 符号之前,从那时起,我一直收到 Gtk 错误。

当我使用ssh -X登录机器并尝试推送时,出现以下错误:

X11 connection rejected because of wrong authentication.
(gnome-ssh-askpass:31922): Gtk-WARNING **: cannot open display:localhost:10.0

如果我把遥控器的url改成git@github.com:username/repository.git,那么报错是:

ssh: connect to host github.com port 22: Connection timed out
fatal: The remote end hung up unexpectedly

你知道如何解决这个问题吗?

【问题讨论】:

我猜你正在使用 ssh。请改用 ssh -X。这意味着密码对话框正在尝试打开,但因为没有 X 而无法打开。 谢谢,但我没有明确使用ssh,只是调用git push origin master,所以我不知道如何应用你所说的? 我可以知道您从哪里推送到服务器吗?我的意思是从哪台机器?你是怎么登录那台机器的? 糟糕。对不起。我没有完全阅读你的问题。您的“网址”应该是 git@github.com:username/repo.githttps://github.com/username/repo.git 但您同时使用两者。 哦,对不起,我现在明白你的意思了。我尝试使用ssh -X 登录机器,但这也无济于事。请参阅上面的更新问题。 【参考方案1】:

您也可以尝试使用 ssh -Y 登录到远程服务器,以便以图形方式显示对话框。

与 OP 一样,通过 ssh -X 登录也不起作用。尝试推送时,服务器只是重复了相同的错误消息 - (gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display: - 就像在没有 X11 转发的情况下通过 ssh 登录时一样。这与 OP 在尝试 ssh -X 时报告的行为略有不同,因为他的错误消息与仅使用 ssh 略有不同。

但是,对我来说,一旦使用 ssh -Y: 登录没有错误,弹出密码对话框,我输入密码,GitHub 接受了推送。

作为一个预警,ssh -Y 可能会引发安全问题,因为您将远程服务器视为受信任的客户端 (https://askubuntu.com/questions/35512/what-is-the-difference-between-ssh-y-trusted-x11-forwarding-and-ssh-x-u)。所以使用的时候要小心。

【讨论】:

【参考方案2】:

这些答案都不适合我(通过 Windows 10 上的 Cygwin ssh'ing 到 RHEL 6.8 服务器并尝试从 RHEL 框中克隆 github.com 存储库)所以我所做的是通过 SSH 密钥而不是克隆HTTPS 用户名/密码。例如我使用了 git@github.com:MyUsername/myproject.git 而不是 https url。我还适当地将我的公钥上传到了 Github。这种方法效果很好。

注意:以上解决方案中,我其实并没有尝试升级到git的1.8分支

【讨论】:

【参考方案3】:

我最近在我们的 Git 版本为 1.7.4.1 的 RedHat 5 机器上处理了这种行为。

我对@9​​87654322@ 不会产生意想不到的后果没有很高的信心,所以我想看看是否有其他解决方案。

我无法确定,但似乎patch for this problem was in the works 与我们的 Git 版本发布的时间差不多。因此,在我看来,希望更新的版本能够纠正这种行为是合理的。

确实如此。 升级到 Git 的 1.8 分支解决了这个问题。由于某些奇怪的原因,错误消息仍然显示,但系统会正确提示您输入密码并允许继续。

【讨论】:

RHEL 5(CentOS 5 等)中的问题在文件 /etc/profile.d/gnome-ssh-askpass.sh(由 openssh-askpass 包拥有)中,其中 SSH_ASKPASS 环境变量是盲目的设置为 /usr/libexec/openssh/gnome-ssh-askpass 如果没有 X(即通过 SSH 通过 PuTTY 登录),这将不起作用。您可以简单地注释掉这个文件中的行(不要删除文件,否则它将在更新 openssh-askpass 包后恢复)。或者完全删除软件包 openssh-askpass (yum remove openssh-askpass)。【参考方案4】:

我终于找到了解决问题的方法。正如here 所描述的那样,我在终端中运行了以下命令:

  unset SSH_ASKPASS

然后运行git push origin master 会按照应有的方式运行。您还可以将该行添加到您的 .bashrc 文件中。

【讨论】:

谢谢...节省了很多时间。祝福你 谢谢..这对我有用!尝试从 bitbucket 克隆到 linux 机器时,我遇到了类似的错误。 只是想补充一下,是这个脚本在我的 CentOS 6.7 系统上设置了这个变量:/etc/profile.d/gnome-ssh-askpass.sh 现在我收到了error: RPC failed; result=22, HTTP code = 417 我这样做了,当我现在尝试连接到 SSH 时,我只剩下一个空白外壳,我可以在其中键入并且不执行任何操作,而不是提示输入我的密码。有什么想法吗?

以上是关于git产生Gtk-WARNING:无法打开显示的主要内容,如果未能解决你的问题,请参考以下文章

Opencv:无法打开显示:C++、Raspberry Pi 无头连接

使用没有 X11 转发的 git

Gtk-WARNING**:无法在模块路径中找到主题引擎:“pixmap”的解决

(leafpad:3839): Gtk-WARNING **: 无法在模块路径中找到主题引擎:“adwaita”

Git (gnome-ssh-askpass:3871): Gtk-WARNING **: cannot open display:

解决 gvim 菜单无法显示中文的问题