Eu acredito que o problema que você está enfrentando é que o servidor ssh não pode garantir que alguém já não tenha usado (encaminhado local ou remotamente) um determinado número de exibição (e porta), portanto ele tem que escolher um que está aberto. Não sei ao certo, mas presumo que tente abri-las em sequência e pare no primeiro que se abrirá. Todas as portas de exibição abertas (incluindo algumas que ainda não foram fechadas pelo processo antigo) podem manter a que você deseja abrir indefinidamente.
Embora não seja uma garantia, você pode tentar definir um valor diferente para X11DisplayOffset
no sshd_config
do seu servidor. Isso ainda não impede outro usuário ou até mesmo um processo nocivo seu mantendo o primeiro display / porta X disponível aberto.
Como alternativa, você pode tentar definir manualmente a variável DISPLAY
(no lado do servidor) para algum número "incomum" ou de porta alta na esperança de evitar as portas normalmente usadas com numeração mais baixa. por exemplo, escolha DISPLAY=:76
, que significa a porta na qual você precisa encaminhar a porta 6076 de volta ao seu servidor X local; Caso você não saiba, a porta TCP usada pelo X é o número 6000 + DISPLAY (os servidores VNC geralmente usam 5900 + DISPLAY, IIRC). Você faria esse encaminhamento manual em sua chamada ssh usando algo assim:
ssh -R6076:localhost:6000 server
Isso encaminhará a porta 6076 no terminal remoto (servidor) de volta para sua exibição local (supondo DISPLAY: 0). O lado negativo dessa abordagem é que agora você precisa lidar com todo o material XAuth que ssh
faz automaticamente usando -X (consulte este outro post para dicas), mas deve funcionar. YYMV e os bits complicados deixados como um exercício para o leitor ;-).