Tentando obter o X11 sobre o SSH funcionando: Conexão recusada pelo servidor

1

Usando o Cygwin / X11
Iniciar o comando no Xterm local para SSH:

xterm -e ssh -Y -v -l MyUser myserver.mydomain.com &

Após o login, eu corri

setenv DISPLAY myclient.mydomain.com:0.0

Quando tento iniciar um Xterm, obtenho:

Xlib: connection to "myclient.mydomain.com:0.0" refused by server
Xlib: No protocol specified

xterm Xt error: Can't open display: myclient.mydomain.com:0.0

Em outro servidor, não tenho problemas para iniciar novas janelas xterm sem executar o setenv.
"echo $ DISPLAY" nesse servidor retorna "localhost: 11.0"

Se eu tentar usar isso no outro servidor, recebo o seguinte:

$ setenv DISPLAY localhost:11.0
$ xterm
xterm Xt error: Can't open display: localhost:11.0

Eu acho que estou sentindo falta de algo bem básico, mas não tenho certeza do que é.

EDIT:
Tentei não definir o $ DISPLAY:

Aqui estão os resultados

$ echo $DISPLAY
DISPLAY: Undefined variable.
$ xlogo
Error: Can't open display:

Ainda não está funcionando: - (

EDITAR Novamente: O acima foi em um login direto. Eu não removi o $ DISPLAY ou mudei antes de tentar executar o xlogo

    
por Luciano 17.08.2010 / 17:11

5 respostas

6

Não defina a exibição no lado remoto. Usando o parâmetro -Y no SSH, ele irá configurar um ouvinte no lado local (remoto) que será tunelado de volta para o lado local.

Você deve conseguir fazer isso:

local$ ssh -Y user@remote
remote$ xlogo

... e o xlogo irá aparecer.

Editar: isso pressupõe que a exibição está configurada no sistema local primeiro, ou seja:

local$ xlogo

... deve funcionar antes de você executar o ssh, já que o ssh apenas conecta o forward de volta a qualquer que seja a sessão de origem que considere a exibição correta. Isso é útil, já que você pode carregar sua exibição por meio de várias sessões ssh:

local$ ssh remote
remote$ ssh further
further$ xlogo

... deve funcionar.

    
por 17.08.2010 / 17:19
2

você deve estar usando o X11 R5. Com essa revisão, suas janelas do X11 devem estar em execução no servidor. Em seguida, emita os seguintes cmds -

printenv | grep 'X11'
printenv | grep 'ssh'

se você achar que o windows X11 está rodando, então -

xterm -e 'ssh remote.machine.domain
xhost + remote.machine.domain
setenv DISPLAY local.machine.domain:0.0
xterm &

Quando você executar os comandos acima, se o xterm exibir uma interface gráfica, então, aha, seu ambiente X11 será configurado para ser executado com o ssh. Caso contrário, verifique se a última revisão do X11 está instalada.

Se isso não funcionar, envie-me uma nota. Eu vou olhar para os logs. ok!.

    
por 22.10.2013 / 08:50
1

De man ssh :

-X   Enables X11 forwarding. This can
     also  be specified on a per-host
     basis in a configuration file.
    
por 17.08.2010 / 17:17
1

David praticamente cravou metade da equação - o mecanismo ssh automaticamente cuida da configuração da autenticação xauth e da definição da sua exibição, então não substitui isso manualmente definindo a variável DISPLAY você mesmo.

O outro problema é que alguns daemons ssh no lado do destino estão configurados para negar o encaminhamento do X, mesmo que você pergunte educadamente.

ssh -v informará se o servidor recusar para permitir o encaminhamento do X; você também pode olhar para o sshd_config para ver se ele proíbe o encaminhamento do X.

    
por 17.08.2010 / 19:49
0

Você deve fazer após o login a

echo $DISPLAY

Provavelmente você obterá algo como "localhost: 11.0". Isso significa que o ssh encaminhará automaticamente qualquer conexão que vai para o localhost 11 para o seu servidor X11 no laptop. Então, basta iniciar seu programa.

Quando você modifica o DISPLAY, você diz ao programa para se conectar diretamente ao seu laptop (sem criptografia). Para que funcione, você deve permitir isso em seu laptop (faça algo como "xhost + myclient.mydomain.com").

Além disso, quando você faz "ssh -Y", no servidor, o servidor X deve ouvir uma porta TCP 6000 + n, onde n é o número de exibição atribuído à sua conexão confiável. Você pode verificar fazendo:

netstat -l -t 

verifique se há algo aberto após a porta 6000 (por exemplo, 6011). Se, por algum motivo, o DISPLAY estiver errado (talvez para a sua máquina colega?), Tente:

setenv DISPLAY localhost:11.0
    
por 17.08.2010 / 19:55