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://[email protected]/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 [email protected]: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?

John Manak
fonte
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 [email protected]: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.

John Manak
fonte
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.

eikonomega
fonte
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 [email protected]: 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

johnsimer
fonte
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.

cr_dave
fonte