Por que eu preciso do XDMCP para iniciar uma sessão X remota através do SSH?

0

Estou tentando configurar uma conexão de área de trabalho remota para acessar meu PC de mesa do meu laptop (ambos executando o Trisquel) via Wi-Fi. Eu tentei VNC e foi terrivelmente lento, então eu estou olhando para opções alternativas. O que eu gostaria de fazer idealmente é iniciar uma sessão X remota sobre SSH, que seria executado em um tty separado no meu laptop (ou seja, tty8), usando o encaminhamento do X. Parece que deveria ser possível, mas estou tentando entender como funciona.

O encaminhamento X sobre o túnel SSH parece funcionar bem para aplicativos X individuais, usando ssh -X . Eu também posso iniciar uma nova sessão X local no tty8 usando o seguinte comando (com o xinit instalado):

startx lxsession -- :1 tty8

Então, colocando dois e dois juntos, eu deveria ser capaz de iniciar uma sessão remota através da conexão SSH digitando o seguinte comando depois de fazer o login na máquina remota com SSH, certo?:

startx gnome-session -- :1 tty8

Mas não, não funciona! Eu recebo o seguinte erro:

X: user not authorized to run the X server, aborting.

Pelo que eu li, parece que eu preciso usar XDMCP e / ou aninhamento X para conseguir isso.

Então, minha pergunta é: por que é necessário usar esses pacotes extras para fazer isso? Eu pensei que o X deveria ter transparência de rede, e nesse caso, por que ele saberia se o tty que estou tentando usar está em uma máquina local ou remota? O que o aninhamento XDMCP / X traz à imagem, que o X não inclui por padrão?

Estou apenas tentando entender isso e entender um pouco melhor.

    
por Time4Tea 03.03.2018 / 15:29

2 respostas

1
startx gnome-session -- :1 tty8

Se você executar este comando em uma sessão ssh -X , você não conseguirá um gnome-session remoto para você mesmo. Em vez disso, você está efetivamente tentando iniciar remotamente uma sessão do GNOME no console tty8 virtual do host remoto, para quem quer que esteja sentado nesse computador.

Em vez disso, você deve primeiro configurar as chaves SSH para poder executar comandos em seu host remoto em sua própria conta, sem solicitar uma senha ou frase secreta de chave SSH. Então você executaria algo parecido com este no seu sistema local :

startx ssh -X <remote host> gnome-session -- :1 tty8

Pode ser necessário adicionar & ao final para que o comando seja executado em segundo plano.

Basicamente, você vai querer:

1) um servidor X no seu tty8, rodando como seu processo de sessão ...

2) ... a conexão SSH X-forwarding para o host remoto, onde ...

3) ... o gnome-session é iniciado e passará suas exibições de volta pela conexão SSH de volta para o servidor X "vazio" em seu tty8 local.

Note que se o GNOME usa recursos avançados de aceleração 3D da GPU para renderizar seu desktop, ele estará usando renderização direta (= acesso direto à memória entre o gerenciador de janelas GNOME e o servidor X) quando rodando localmente. Ao executar uma sessão remota como essa, a renderização direta não será possível (já que a GPU não está no mesmo computador que o processo do gerenciador de janelas!), O que pode desacelerar as coisas. Nesse caso, você pode ter que escolher um gerenciador de janelas mais simples.

O XDMCP é um protocolo para controlar terminais X11: dispositivos de computador despojados cujo único trabalho é atuar como um monitor + mouse + teclado X11 para algum outro computador. O protocolo XDMCP foi desenvolvido antes do SSH e é completamente inseguro. Ele não se aplica ao seu caso, a menos que você configure especificamente o gerenciador de exibição (o gdm , kdm , xdm ou qualquer outro *dm ) como compatível com XDMCP, pois o XDMCP está desativado por padrão em sistemas modernos porque não é seguro. Se você fez isso, então poderia dizer a startx para fazer seu servidor X local fingir que é um terminal X11, e fazer uma conexão direta, não criptografada, não-SSH-forwarded para o host remoto. (Apenas diga "não".)

O aninhamento X, por outro lado, permitiria, por exemplo, tem uma única janela grande em sua sessão X11 local regular em: 0.0 (ou tty7 ), que conteria a sessão da área de trabalho remota.

    
por 03.03.2018 / 16:29
1

Eu uso o Xnest para este link

Depois que ele estiver instalado (ele está no apt para Debian / ubuntu / mint / etc) abra um terminal e faça

user@localhost:~$ Xnest :1 &
user@localhost:~$ export DISPLAY=:1
user@localhost:~$ ssh -Y user@remotehost
(login, etc)
user@remotehost:~$ mate-session

Alternativamente, você pode abrir um VT (ctrl + alt + F1 etc) e iniciar um novo servidor X apenas usando X :1 e depois fazendo o mesmo export DISPLAY=:1 e sshing. Pessoalmente eu prefiro o Xnest.

    
por 03.03.2018 / 16:27