Putty-> Cygwin X11 Forwarding "Não é possível abrir a tela" Erro

11

Estou usando o Putty em uma máquina Windows para ssh em outro servidor. Uma vez lá, estou tentando usar o encaminhamento X11 para abrir janelas no meu computador. O sistema remoto não é o problema, pois é um sistema grande que é usado com sucesso por muitos outros usuários da mesma maneira.

Entro no sistema via Putty sem problemas e depois corro startxwinno cygwin. No entanto, ao rodar xtermem Putty, recebo o erro em xterm Xt error: Can't open display: localhost:##.0que os sinais de libra são dois números inteiros cujo valor muda cada vez que faço login.

  • Tenho o encaminhamento X11 ativado nas configurações de Putty
  • Tentei definir o "local de exibição do X" para localhost:0
  • Garanti o download do pacote X11 para o cygwin
  • Eu tentei usar apenas em startxvez destartxwin
  • Eu tentei setenv DISPLAY localhost:0esetenv DISPLAY my.ip.address

Infelizmente, o problema persiste. Eu esgotei meus recursos do Google sobre este tópico e gostaria muito de receber qualquer ajuda. Obrigado!

Tyler
fonte
localhost:##.0Que números reais você está vendo aqui? Que tipo de software X você está executando no computador Windows?
Kenster 07/04

Respostas:

11

As atualizações recentes do Cygwin alteraram seu servidor X para não atender às conexões TCP por padrão. Em vez disso, o X do Cygwin usa (a implementação do Cygwin) de soquetes de domínio Unix e o PuTTY (como um programa nativo do Windows) não sabe como usá-los.

Os Cygwin X FAQ e Cygwin discussão listas têm mais detalhes.

Minha solução foi usar o atalho padrão do Cygwin que usa o startxwin para iniciar o X:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin"

e substitua-o por uma invocação direta do xinit pelas minhas opções desejadas (adicionar -listen tcpe remover -auth):

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/xinit /etc/X11/xinit/startxwinrc -- /usr/bin/XWin :0 -multiwindow -listen tcp"

Isso é menos seguro do que os novos padrões do Cygwin; ele deve ser usado apenas em um sistema de usuário único e a configuração do firewall para bloquear as conexões com o XWin pode ser sensata.

Josh Kelley
fonte
onde executar isso ?? No terminal cygwin / PS / CMD
yellowandred
1
@yellowandred Começa com `C:`, portanto é um caminho no estilo Windows, não no terminal Cygwin. Acabei de colocá-lo na seção Destino do meu atalho do Windows. O CMD deve funcionar. O PowerShell deve funcionar, mas pode ser necessário atualizar a cotação.
21418 Josh Kelley
6

Como alternativa ao que Josh Kelley disse, você também pode editar o arquivo startxwin e adicionar o "-listen tcp" aos argumentos padrão do servidor.

Antigo: defaultserverargs = "- janela múltipla"

Novo: defaultserverargs = "- multiwindow -listen tcp"

Também com a autenticação ativada, tive que apontar a massa para o arquivo de autenticação criado pelo script startxwin. O meu estava localizado aqui: c: \ cygwin64 \ home \ USERNAME.Xauthority

Como esse arquivo é recriado, você terá que reiniciar as sessões de massa após redefinir seu xserver.

Por segurança, você também pode permitir apenas conexões do host local, pois é nesse local que a massa o encaminha.

Sir Lancelote
fonte
4

Tentei definir o "local de exibição do X" como localhost: 0

Por favor, tente definir o "local de exibição do X" para ': 0,0'!

export DISPLAY=:0.0

Josh Kelley mencionou o Cygwin X FAQ :

3.13 Eu atualizei e agora os clientes X não conseguem se conectar

A1:

Desde o servidor X 1.17, por padrão, o servidor não escuta conexões TCP / IP, aceitando apenas conexões locais em um soquete de domínio unix.

Para clientes locais, use DISPLAY =: 0.0, em vez de DISPLAY = localhost: 0.0, DISPLAY = 127.0.0.1: 0.0, DISPLAY = :: 1: 0.0, etc.

user3248784
fonte
0

Como outros já disseram, o truque é adicionar -listen tcpaos argumentos do servidor. No entanto, eu recomendo fazer isso chamando startxwin -- -listen tcppara deixar startxwincriar o restante do xinitcomando.

Em um atalho do menu Iniciar:

C:\cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; /usr/bin/startxwin -- -listen tcp"
Dominic Lemire
fonte