Git 产生 Gtk-警告: 不能打开显示

我一直通过命令行在一台没有管理员权限的机器上远程操作我的项目,在运行 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错误。在注释 给你之后,我将我的用户名放在远程 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

你知道怎么修吗?

90349 次浏览

我终于找到了解决这个问题的办法。正如对 给你的描述,我在终端中运行以下命令:

  unset SSH_ASKPASS

然后运行 git push origin master的工作方式应该。您也可以添加行到您的 .bashrc文件。

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

我不太相信 ABc0不会有意外后果,所以我想看看是否有其他的解决方案。

我不能肯定地说,但似乎是在我们的 Git 版本发布的同一时间 这个问题的补丁正在进行中。所以,在我看来,希望一个更新的版本能够纠正这种行为是合理的。

的确如此。由于一些奇怪的原因,错误消息仍然显示,但是正确地提示您输入密码并允许继续。

这些答案对我都不起作用(在 Windows 10上通过 Cygwin 进入一个 RHEL 6.8服务器,并试图从 RHEL 框中克隆一个 github.com 回购) ,所以我所做的是通过一个 SSH 密钥而不是 HTTPS 用户名/密码进行克隆。例如,我使用 git@github.com: MyUsername/myproject.git 而不是 https url。我还恰当地将我的公钥上传到 Github。这种方法很有效。

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

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

与 OP 一样,通过 ssh-X 登录也不起作用。当尝试推送时,服务器只是重复相同的错误消息 -(gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display:-就像通过 ssh 进行日志记录时没有 X11转发一样。这与 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)时引发安全问题。所以使用时要小心。