De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Redirecionando o X (X11 Forwarding) no GNU Linux

Colaboração: Sandro do Prado Gambini

Data de Publicação: 30 de Julho de 2006

Muitos já tabalharam com o redirecionamento do X, ou seja, em uma máquina servidora (que pode ser qquer distro GNU/Linux) setamos a variável de sistema $DISPLAY para o ip_cliente:0.0 e ao executarmos qualquer programa que se utiliza do ambiente gráfico X, a interface do programa vai ser aberta na máquina especificada em $DISPLAY.

Para isto antes temos que certificar que o X da máquina cliente está apto a receber conexões remotas. Em distribuições voltadas para o desktop como o Kurumin e o Ubuntu, geralmente o X é aberto com a opção -no listen tcp, que desabilita a opção de receber conexões remotas. Uma forma de verificarmos isto é através do comando ntstat, veja:

  kurumin@cliente:~$ netstat -atn
  Conexões Internet Ativas (servidores e estabelecidas)
  Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado
  tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
  tcp        0      0 0.0.0.0:631             0.0.0.0:*               LISTEN

Quando o X está apto a receber conexões remotas veremos a porta 6000 em estado "LISTEN" e quando não estiver apto, simplesmente não aparecerá essa porta em escuta. Caso a porta não esteja em LISTEN (escutando), como no exemplo acima, teremos que verificar como o gerenciador de display executa o X.

Nas distros que possuem o KDE como ambiente gráfico, o gerenciador de display utilizado é o KDM (KDE Display Manager), como no Kurumin e nas distros que utilizam o Gnome normalmente é utilizado o GDM (GNOME Display Manager), como no Ubuntu por exemplo. Existe ainda o XDM (X Display Manager) que é o gerenciador implementado pelo próprio X.

Para saber como o KDM e o GDM vão executar o X temos que verificar os seguintes arquivos:

  1. No KDM, no arquivo /etc/kde3/kdm/Xservers temos a seguinte linha que inibe o redirecionamento do X:
      :0 local@tty1 /etc/X11/X  -dpi 75 -nolisten tcp vt7
    

    esta linha deve ser substituída pela linha abaixo:
      :0 local@tty1 /etc/X11/X  -dpi 75 vt7
    

    observem que foi retirado o parâmetro "-nolisten tcp"

  2. No GDM em /etc/gdm/gdm.conf Procure pela sessão
      [security]
    

    e altere a opção:
      DisallowTCP=True
    

    para:
      DisallowTCP=false
    

Resumindo, vamos supor um ambiente de rede com um Servidor, ip 192.168.1.1 e uma máquina Cliente, ip 192.168.1.2 e vamos executar um programa no Servidor e visualizá-lo no Cliente, ou seja redirecinando o X:

  1. Temos que certificar que a porta tcp:6000 está aberta (LISTEN);
      kurumin@cliente:~$ netstat -atn
      Conexões Internet Ativas (servidores e estabelecidas)
      Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado
      tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
      tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN
      tcp        0      0 0.0.0.0:631             0.0.0.0:*               LISTEN
    

  2. Acrescentar à lista de controle de acesso do X local(cliente), o ip do servidor
      kurumin@cliente:~$ xhost +192.168.1.1
      192.168.1.1 being added to access control list
    
    ou ainda desabilitar o controle de acesso do X local(cliente):
      kurumin@cliente:~$ xhost +
      access control disabled, clients can connect from any host
    
  3. Abrir uma conexão com o Servidor:

      kurumin@cliente:~$ telnet 192.168.1.1
    
    ou
      kurumin@cliente:~$ ssh usuario@192.168.1.1
    

  4. Já no Servidor basta apontar a variável $DISPLAY para o cliente (para o ssh não precisa):

      kurumin@Server1:~$ export DISPLAY=192.168.1.2:0.0
    

  5. E finalmente executar o programa desejado:

      kurumin@Server1:~$ mozilla &
    

Com isso o navegador mozilla firefox será executado no servidor porém será visualizado na máquina local.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Sandro do Prado Gambini