Estou tentando configurar uma conexão de área de trabalho remota para acessar meu PC de mesa a partir do meu laptop (ambos executando o Trisquel) por wi-fi. Eu tentei o VNC e foi terrivelmente lento, então estou procurando opções alternativas. O que eu gostaria de fazer é iniciar uma sessão X remota por SSH, que seria executada 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 isso funciona.
O encaminhamento do X pelo túnel SSH parece funcionar bem para aplicativos X individuais, usando arquivos ssh -X
. Também posso iniciar uma nova sessão X local no tty8 usando o seguinte comando (com o xinit instalado):
startx lxsession -- :1 tty8
Portanto, somando dois mais dois, devo conseguir iniciar uma sessão remota pela conexão SSH digitando o seguinte comando após fazer login na máquina remota com SSH, certo?:
startx gnome-session -- :1 tty8
Mas não, não funciona! Estou tendo o erro a seguir:
X: user not authorized to run the X server, aborting.
Pelo que li, parece que preciso usar o aninhamento XDMCP e/ou X para fazer isso.
Então, minha pergunta é: por que é necessário usar esses pacotes extras para fazer isso? Eu pensei que X deveria ter transparência de rede, nesse caso, por que ele saberia/se importaria se o tty que estou tentando usar está em uma máquina local ou remota? O que o aninhamento XDMCP/X traz para a imagem, que o X não inclui por padrão?
Estou apenas tentando entender isso e entender um pouco melhor.
Se você executar esse comando em uma
ssh -X
sessão, não obterá um controle remotognome-session
para si mesmo. Em vez disso, você está efetivamente tentando iniciar remotamente uma sessão do GNOME notty8
console virtual do host remoto, para quem quer que esteja sentado naquele computador.Em vez disso, você deseja primeiro configurar as chaves SSH para poder executar comandos em seu host remoto em sua própria conta sem solicitar uma senha ou senha de chave SSH. Então você executaria algo assim em seu sistema local:
Pode ser necessário adicionar
&
ao final para que o comando seja executado em segundo plano.Basicamente, você vai querer:
1) um servidor X em seu tty8, rodando como seu processo de sessão...
2) ... a conexão SSH de encaminhamento X para o host remoto, onde ...
3) ...o
gnome-session
é iniciado e passará suas exibições de volta pela conexão SSH de volta ao servidor X "vazio" em seu tty8 local.Observe que, se o GNOME usar recursos avançados de aceleração 3D da GPU para renderizar sua área de trabalho, ele usará renderização direta (= acesso direto à memória entre o gerenciador de janelas do GNOME e o servidor X) ao executar localmente. Ao executar uma sessão remota como esta, 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 tornar as coisas mais lentas. Nesse caso, talvez seja necessário escolher um gerenciador de janelas mais simples.
XDMCP é um protocolo para controlar terminais X11: dispositivos de computador simplificados cujo único trabalho é atuar como um monitor X11+mouse+teclado para algum outro computador. O protocolo XDMCP foi desenvolvido muito antes do SSH e é completamente inseguro. Isso não se aplica ao seu caso, a menos que você configure especificamente o gerenciador de exibição (o ,
gdm
ou qualquer outro ) para reconhecer o XDMCP, pois o XDMCP é desativado por padrão nos sistemas modernos porque não é seguro. Se você fez isso, poderia dizer para fazer seu servidor X local fingir que é um terminal X11 e fazer com que ele faça uma conexão direta, não criptografada e não encaminhada por SSH com o host remoto. (Apenas diga não".)kdm
xdm
*dm
startx
O aninhamento X, por outro lado, permitiria, por exemplo, que você tivesse uma única janela grande em sua sessão X11 local regular em :0.0 (ou
tty7
), que conteria a sessão de área de trabalho remota.Eu uso o Xnest para isso https://www.x.org/archive/X11R7.5/doc/man/man1/Xnest.1.html
Depois de instalado (está em apt para Debian/ubuntu/mint/etc) abra um terminal e faça
Como alternativa, você pode abrir um VT (ctrl+alt+F1 etc) e iniciar um novo servidor X apenas usando
X :1
e, em seguida, fazendo o mesmoexport DISPLAY=:1
e sshing. Pessoalmente, prefiro o Xnest.