git produz Gtk-WARNING: não pode abrir a tela


138

Estou trabalhando no meu projeto remotamente através da linha de comando em uma máquina à qual não tenho direitos de administrador e, após a execução git push origin master, recebo a seguinte mensagem de erro:

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

Meu .git/configarquivo tem o seguinte conteúdo:

    [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

Eu estava recebendo o erro 403 anteriormente. Após o comentário aqui , coloquei meu nome de usuário antes do sinal @ na URL remota e, desde então, recebo o erro Gtk.

Quando entro na máquina usando ssh -Xe tento enviar, recebo o seguinte erro:

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

Se eu alterar o URL do controle remoto para git@github.com:username/repository.git, o erro será:

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

Você sabe como consertar isso?


2
Eu acho que você está usando ssh. Use ssh -X. Isso significa que um diálogo de senha está tentando abrir, mas não pôde porque não há X.
positron

Obrigado, mas não estou usando o ssh explicitamente, apenas ligando git push origin master, então não sei como aplicar o que você está dizendo?
John Manak

Posso saber de onde você está enviando para o servidor? Quero dizer de qual máquina? Como você entrou nessa máquina?
Positr #

1
Opa Desculpe. Não li completamente sua pergunta. Seu "URL" deve ser git@github.com:username/repo.gitou https://github.com/username/repo.gitMas você está usando uma mistura dos dois.
Positr #

Oh, desculpe, entendi o que você quer dizer agora. Tentei fazer login na máquina usando ssh -X, mas isso também não ajudou. Veja a pergunta atualizada acima.
precisa saber é o seguinte

Respostas:


336

Finalmente descobri uma solução para o problema. Como foi descrito aqui , executei o seguinte comando no terminal:

  unset SSH_ASKPASS

e, em seguida, a execução git push origin masterfunciona da maneira que deveria. Você também pode adicionar a linha ao seu .bashrcarquivo.


5
Obrigado ... isso economizou muito tempo. Bless you
Poonam Bhatt

Obrigado por isso! :-)
ItayB

1
Obrigado .. que funcionou para mim! Eu estava recebendo um erro semelhante ao tentar clonar do bitbucket na máquina linux.
Blesson Jose 11/02/16

2
Só queria acrescentar que era esse script que definia essa variável no meu sistema CentOS 6.7: /etc/profile.d/gnome-ssh-askpass.sh
hshib

Agora estou recebendo umerror: RPC failed; result=22, HTTP code = 417
pmiranda

19

Recentemente, lidei com esse comportamento em uma máquina RedHat 5 em que nossa versão do Git era 1.7.4.1.

Eu não tinha um alto grau de confiança que unset SSH_ASKPASSnão teria conseqüências não intencionais, então queria ver se havia outra solução.

Eu não sabia ao certo, mas parece que um patch para esse problema estava em andamento na mesma época em que nossa versão do Git havia sido publicada. Então, pareceu-me que era razoável esperar que uma versão mais recente corrija o comportamento.

E de fato aconteceu. A atualização para a ramificação 1.8 do Git resolveu o problema. A mensagem de erro ainda é exibida por algum motivo estranho, mas a senha é solicitada corretamente e você pode continuar.


2
O problema no RHEL 5 (CentOS 5 etc.) está no arquivo /etc/profile.d/gnome-ssh-askpass.sh (de propriedade do pacote openssh-askpass) em que a variável de ambiente SSH_ASKPASS é configurada cegamente como / usr / libexec / openssh / gnome-ssh-askpass e isso não funciona se não houver um X (ou seja, conectado via PuTTY sobre SSH). Você pode simplesmente comentar a linha deste arquivo (não exclua o arquivo ou ele será recuperado após a atualização do pacote openssh-askpass). Ou remova o pacote openssh-askpass completamente (yum remova o openssh-askpass).
Milan Kerslager 8/17

0

Nenhuma dessas respostas funcionou para mim (transferir via Cygwin no Windows 10 para um servidor RHEL 6.8 e tentar clonar um repositório github.com da caixa RHEL), então o que eu fiz foi clonar por uma chave SSH em vez do nome de usuário HTTPS / senha. por exemplo, usei git@github.com: MyUsername / myproject.git em vez do URL https. Também carreguei adequadamente minha chave pública no Github. Este método funcionou bem.

Nota: Das soluções acima, na verdade, eu não tentei atualizar para o ramo 1.8 do git


0

Você também pode tentar fazer login usando ssh -Y no servidor remoto para que a caixa de diálogo possa aparecer graficamente.

Como o OP, o login via ssh -X não funcionou. Ao tentar enviar por push, o servidor simplesmente repetiu a mesma mensagem de erro -(gnome-ssh-askpass:29241): Gtk-WARNING **: cannot open display: - como fazia no log via ssh sem encaminhamento X11. Esse é um comportamento um pouco diferente do relatado pelo OP ao tentar o ssh -X, pois sua mensagem de erro mudou um pouco ao usar o ssh.

No entanto, para mim, uma vez logado usando ssh -Y: não houve erro, a caixa de diálogo de senha apareceu, digitei a senha e o GitHub aceitou o envio.

Como aviso prévio, o ssh -Y pode abrir problemas de segurança enquanto você trata o servidor remoto como um cliente confiável ( /ubuntu/35512/what-is-the-difference-between-ssh-y- confiável-x11-encaminhamento-e-ssh-xu ). Portanto, tenha cuidado ao usá-lo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.