我一直在通过我没有管理员权限的机器上的命令行远程处理我的项目,并且在运行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://[email protected]/username/repository.git [branch "master"] remote = origin merge = refs/heads/master
我之前收到了403错误。在评论here之后,我将我的用户名放在远程网址的@符号之前,从那以后,我一直在收到Gtk错误。
当我使用ssh -X
登录到机器并尝试推送时,我收到以下错误:
X11 connection rejected because of wrong authentication.
(gnome-ssh-askpass:31922): Gtk-WARNING **: cannot open display:localhost:10.0
如果我将远程的url更改为[email protected]:username/repository.git
,则错误为:
ssh: connect to host github.com port 22: Connection timed out
fatal: The remote end hung up unexpectedly
你知道怎么解决这个问题吗?
我终于找到了解决问题的方法。正如here所描述的那样,我在终端中运行了以下命令:
unset SSH_ASKPASS
然后运行git push origin master
以它应该的方式工作。您还可以将该行添加到.bashrc
文件中。
我最近在RedHat 5机器上处理了这种行为,我们的Git版本是1.7.4.1。
我没有高度的信心,unset SSH_ASKPASS
不会产生意想不到的后果,所以我想看看是否有另一种解决方案。
我无法确定,但似乎在我们的Git版本发布的同时,patch for this problem was in the works。因此,在我看来,希望更新的版本能够纠正这种行为是合理的。
确实如此。升级到Git的1.8分支解决了这个问题。出于某些奇怪的原因仍然显示错误消息,但是系统正确提示您输入密码并允许其继续。
这些答案都不适合我(在Windows 10上通过Cygwin进入RHEL 6.8服务器并尝试从RHEL框中克隆github.com repo)所以我所做的是通过SSH密钥而不是HTTPS用户名克隆密码。例如我使用[email protected]:MyUsername/myproject.git而不是https网址。我还适当地将我的公钥上传到Github。这种方法很好。
注意:在上述解决方案中,我实际上没有尝试升级到git的1.8分支
您还可以尝试使用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)。所以使用时要小心。