Tela X11 sobre ssh com o monitor conectado à máquina remota

0

Eu tenho a seguinte configuração: Máquina A (a.corp, 192.168.100.130, máquina local) e Máquina B (b.corp, máquina remota) e um monitor é conectado a cada uma dessas máquinas. Quando eu ssh de a.corp para b.corp como

Máquina A, máquina local, ou seja, a.corp configurada:

.ssh/config

Host *
    ForwardX11 yes
    TCPKeepAlive no
    ServerAliveInterval 15
    ServerAliveCountMax 10
    IdentityFile ~/.ssh/id_dsa.work

/etc/ssh_config (é um OS-x, Darwin 12.2.0)

Host *
  SendEnv LANG LC_*
  ForwardX11 yes

MachineB, máquina remota, isto é, configuração b.corp: (kernel do ubuntu: 3.2.0)

.ssh/config

Host * 
    ForwardX11 yes
    IdentityFile ~/.ssh/id_dsa.work

/etc/ssh/ssh_config

Host * 
    SendEnv LANG LC_*
    ForwardX11 yes

Caso 1:

(DISPLAY on a.corp is not set)
$ echo $DISPLAY

$ ssh -X b.corp

(DISPLAY on b.corp is not set either)
$ echo $DISPLAY

$ xclock
Error: Can't open display:

Caso 2: tentei definir a variável DISPLAY como

(DISPLAY on a.corp is not set)
$ echo $DISPLAY

$ ssh -X b.corp
$ export DISPLAY=`echo $SSH_CLIENT|cut -f1 -d\ `:0.0
$ echo $DISPLAY
192.168.100.130:0.0
$ xclock

O visor do xclock é aberto, mas no monitor conectado ao b.corp (máquina remota) e não no monitor conectado ao a.corp (máquina local). Existe uma maneira de forçar a exibição do monitor no monitor da máquina local (a.corp)?

Sumit
fonte
11
192.168.100.130 é o ip de qual máquina?
Don Simon

Respostas:

2

Normalmente, DISPLAYdeve ser definido como localhost:10.0 na máquina remota Você também deve garantir que /etc/ssh/ssh_configa máquina remota tenha a linha

ForwardX11 Yes

Sob a seção

Host *

ou

Host a.corp

se você deseja permitir o encaminhamento do X11 apenas para este host.

Joseph R.
fonte
Se isso funcionou para você, considere atualizar a pergunta para que outras pessoas com o mesmo problema possam corrigi-la.
Joseph R.
Você quis dizer DISPLAYna máquina local ou remota. Se eu definir DISPLAYem uma máquina remota para localhost:10.0receber Error: Can't open display: localhost:10.0. Atualizei a pergunta com as definições de configuração na máquina local e remota.
Sumit
Eu quis dizer na máquina remota (modificou a resposta). Isso geralmente é configurado pela opção -X; o que me faz suspeitar que sua configuração de alguma forma bloqueia o encaminhamento do X11. Você mencionou procurar em .ssh/configque casa do usuário eles estavam? Você verificou os arquivos de todo o sistema etc/ssh/ssh_config?
Joseph R.
Joseph, eu verifiquei os arquivos do sistema também. Nada incomum lá. Atualizei a pergunta com /etc/ssh_configinformações também.
Sumit
Bem, os arquivos de todo o sistema na máquina B não parecem indicar que ela permite o encaminhamento do X11. Se você tiver os privilégios corretos na máquina B, tente adicionar ForwardX11 Yesa /etc/ssh/ssh_configela.
Joseph R.
0

Tente conectar-se sem usar o xauth:

client @ home: servidor ssh -Y xeyes

Se isso funcionar, você precisará verificar a configuração da segurança x11 corretamente.

Ярослав Рахматуллин
fonte
Como afirmei nos comentários acima, isso funciona da mesma forma que a opção -X
Sumit
Você está executando o su para se tornar outro usuário ou algo assim? Se DISPLAY não estiver definido no "xterm" que vive na sua sessão x local, não há para onde encaminhar. A variável DISPLAY deve ser definida antes de você tentar encaminhar algo para ela a partir de um host remoto. Você pode iniciar xeyesou algo semelhante a partir do emulador de terminal em que faz shell no servidor remoto? Se você não consegue nem iniciar as coisas localmente, e não poderá fazê-lo a menos que DISPLAY esteja definido, não é de admirar que o encaminhamento não esteja funcionando. no caso de su, pule o - (novo shell de login). No caso de sudo, use a opção -E.
Ярослав Рахматуллин
Não, eu não estou usando suou sudo. E sim, o xeyes abre bem, só que não aparece na tela certa (atualizei as perguntas com o comportamento exato observado)
Sumit
Nada abrirá "muito bem" quando o DISPLAY não estiver definido. Exporte a variável como: 0.0 e tente fazer o shell para o host remoto com -Y, como sugeri. Para usar um ip no DISPLAY no host remoto, o host local deve ter executado xhost + remotehost.com. Certifique-se de que 192.168.100.130 significa o que você pensa que faz no host remoto - que é o seu computador local. Por fim, verifique se não há regras de firewall que restrinjam esse tipo de tráfego.
Ярослав Рахматуллин