Monitor X11 encaminhado por SSH do Linux para Mac perdido após algum tempo

10

Eu tenho um problema novo e irritante com o ssh encaminhando minha conexão X11 ao fazer o login de um Mac (10.7.2) para Linux (Ubuntu 8.04). Não tenho problemas para usar o ssh -X para efetuar login na máquina remota e iniciar um aplicativo baseado no X11 a partir desse shell.

O que começou recentemente a acontecer é que invocações adicionais de aplicativos X11 desse mesmo shell, depois de um tempo (na ordem de horas), não podem ser iniciadas porque a exibição encaminhada está sendo bloqueada (presumo). Ao tentar iniciar o xterm, por exemplo, recebo a mensagem usual sobre uma configuração de DISPLAY ruim, como:

xterm Xt error: Não é possível abrir a tela: localhost: 10.0

Mas o aplicativo X11 que iniciei quando fiz o login ainda está funcionando perfeitamente, usando exatamente a mesma exibição (localhost: 10.0), apenas que foi iniciado anteriormente.

Ativei o log detalhado no sshd_config e vejo isso no arquivo /var/log/auth.log em resposta à tentativa falha de inicialização do xterm:

sshd [22104]: canal 8: falha na abertura: proibido administrativamente: falha na abertura

Se eu ssh -X no servidor novamente, iniciando um novo shell e recebendo uma nova exibição (localhost: 11.0), o mesmo processo se repete: os aplicativos X11 iniciaram cedo, rodando muito bem desde que eu os mantenha abertos (dias ), mas depois de algumas horas não consigo iniciar novos a partir desse shell.

Detalhes: O servidor OpenSSH sshd em execução no Ubuntu 8.04, é encaminhado para um Mac executando o Lion (10.7.2) com o servidor Apple X padrão. Os sistemas estão conectados em uma LAN Ethernet com um único switch entre eles. Nenhuma máquina está executando um firewall. Até recentemente (alguns dias atrás), essa configuração funcionava perfeitamente, por isso estou confuso quanto ao local a seguir. Não sou especialista em X11 ou SSH, mas tenho uma boa experiência em UNIX / Linux. Nada óbvio mudou na configuração do cliente ou do servidor, embora eu tenha tentado alterar algumas opções para tentar depurar isso, como configurar TCPKeepAlive do sshd_config como no e definir "host + localhost" (você pode ver que estou pesquisando no Google).

Ao fazer logon de um laptop Linux 11.10 no mesmo host remoto na mesma rede e switch, esse problema não ocorre - um xterm pode ser chamado com sucesso horas depois no mesmo shell de login ssh enquanto o mesmo experimento no Mac falha ( testado esta manhã para ter certeza), então parece ser um problema específico do Mac.

Com o "LogLevel DEBUG3" definido na máquina remota (servidor sshd) e nenhuma alteração feita nas conexões do cliente por mim, /var/log/auth.log mostra uma pequena alteração nos relatórios de status da conexão durante a noite, que é o número da porta usada pela sessão ssh bem-sucedida da máquina Linux (eu acho), conexão nº 7 abaixo:

sshd [20173]: debug3: canal 7: status: As seguintes conexões estão abertas: \ r \ n # 0 sessão do servidor (t4 r0 i0 / 0 o0 / 0 fd 14/13 cfd -1) \ r \ n # 3 Conexão X11 da porta 127.0.0.1 57564 (t4 r1 i0 / 0 o0 / 0 fd 16/16 cfd -1) \ r \ n # 4 Conexão X11 da porta 127.0.0.1 57565 (t4 r2 i0 / 0 o0 / 0 fd 17 / 17 cfd -1) \ r \ n # 5 conexão X11 da porta 127.0.0.1 57566 (t4 r3 i0 / 0 o0 / 0 fd 18/18 cfd -1) \ r \ n # 6 conexão X11 da porta 127.0.0.1 57567 (t4 r4 i0 / 0 o0 / 0 fd 19/19 cfd -1) \ r \ n # 7 conexão X11 da porta 127.0.0.1 porta 59007

Neste relatório, tudo é igual entre os relatórios de status, exceto o número da porta usada pela conexão nº 7, que acredito ser o cliente Linux - o único que ainda mantém uma conexão de vídeo. Ele continua a aumentar com o tempo, a julgar por uma sequência desses relatórios da noite para o dia.

Obrigado por qualquer ajuda,

-Mike

mklein9
fonte
Estou com o mesmo problema.
churnd
Liguei -vvv no comando ssh para obter informações de depuração da sessão ssh do lado do cliente do Mac. Eu entendi o seguinte: codeConexão X11 rejeitada após o término do ForwardX11Timeout O ForwardX11Timeout é uma opção no cliente ssh do Mac que limita o encaminhamento de uma conexão não confiável. Potencialmente, usar -Y em vez de -X funcionaria. O ForwardX11Timeout não está documentado na página do manual do ssh do Lion. Seu padrão parece ser 20 minutos. É possível configurá-lo mais alto em ssh_config, mas o servidor X do Lion trava se definido como> 596 horas ... o que, em milissegundos, excede 31 bits. Arrgh. Espero que isso conserte.
Mckin9

Respostas:

13

As sessões ssh começaram depois que eu mudei o arquivo / etc / ssh_config do cliente Mac para incluir a linha:

EncaminhamentoX11Timeout 596h

estão todos funcionando bem e têm estado o dia todo. A essa altura, todos eles teriam se recusado a iniciar novos xterms. Então, acredito que esta é a resposta e, felizmente, uma solução simples, mas o tempo limite ainda acontecerá daqui a três semanas e meia.

mklein9
fonte
3

man ssh_config

AtacanteX11Trusted

Se essa opção estiver configurada como "yes", os clientes X11 remotos terão acesso total à exibição original do X11. Se essa opção estiver configurada como "não", os clientes X11 remotos serão considerados não confiáveis ​​e impedidos de roubar ou adulterar dados pertencentes a clientes X11 confiáveis. Além disso, o token xauth (1) usado para a sessão será configurado para expirar após 20 minutos. Clientes remotos terão acesso recusado após esse período. O padrão é "não". Consulte a especificação de extensão X11 SECURITY para obter detalhes completos sobre as restrições impostas a clientes não confiáveis.

Isabella
fonte
1
Pode ser útil se você expandir o motivo pelo qual acha que essa opção de configuração resolveria o problema original.
Pjmorse # 12/12
Isso explica por que o problema ocorre, mas algum raciocínio seria útil.
Stefan Lasiewski 26/03
1

Para adicionar a "respondeu 7 de janeiro '12 às 0:11 mklein9 28129" "As sessões ssh começaram depois que eu mudei o arquivo / etc / ssh_config do cliente Mac para incluir a linha:

ForwardX11Timeout 596h

... mas o tempo limite ainda acontecerá daqui a três semanas e meia. "

Aparentemente, você pode usar 0 e isso define o tempo limite para o infinito (desde que a conexão esteja ligada).

ForwardX11Timeout 0

...

AB
fonte