Se você está em uma rede segura, por que criptografar? Você pode redirecionar diretamente X sem ssh e obter melhor velocidade e latência.
Veja, por exemplo, este tutorial (antigo, mas ainda válido) ; aqui você pode usar o mecanismo Xhost (inseguro):
Uma pequena teoria
A palavra mágica é DISPLAY
. No sistema X window, um display consiste (simplificado) de um teclado, um mouse e uma tela. Uma exibição é gerenciada por um programa do servidor, conhecido como um servidor X. O servidor serve para exibir recursos para outros programas que se conectam a ele.
Um display é indicado com um nome, por exemplo:
DISPLAY=light.uni.verse:0
DISPLAY=localhost:4
DISPLAY=:0
A exibição consiste em um nome de host (como light.uni.verse
e localhost
), dois pontos ( :
) e um número de sequência (como 0
e 4
). O nome do host da exibição é o nome do computador em que o servidor X é executado. Um nome de host omitido significa o host local. O número de seqüência geralmente é 0
- pode ser variado se houver vários monitores conectados a um computador.
Se você se deparar com uma indicação de exibição com um .n
extra anexado a ela, esse é o número da tela. Um monitor pode ter várias telas. Normalmente há apenas uma tela, com o número n
= 0
, então esse é o padrão.
Outras formas de DISPLAY
existem, mas as opções acima serão válidas para nossos propósitos.
Dizendo ao cliente
O programa cliente (por exemplo, seu aplicativo gráfico) sabe para qual monitor conectar-se, inspecionando a variável de ambiente DISPLAY
.
Nosso computador é conhecido por fora como light
e estamos no domínio uni.verse
. Se estivermos executando um servidor X normal, a exibição é conhecida como light.uni.verse:0
. Queremos executar o programa de desenho xfig
em um computador remoto, chamado dark.matt.er
, e exibir sua saída aqui em light
.
Suponha que você já tenha telnet
/ rsh
/ ssh
-ed no computador remoto, dark.matt.er
.
Se você tem sh
em execução no computador remoto:
dark$ DISPLAY=light.uni.verse:0
dark$ export DISPLAY
dark$ xfig &
ou, alternativamente:
dark$ DISPLAY=light.uni.verse:0 xfig &
Dizendo ao servidor
O servidor não aceitará conexões de qualquer lugar. Você não quer que todos possam exibir janelas na tela. Ou leia o que você digita - lembre-se de que o seu teclado faz parte do seu monitor!
Poucas pessoas parecem perceber que permitir o acesso ao seu monitor representa um risco de segurança. Alguém com acesso ao seu monitor pode ler e gravar suas telas, ler as teclas pressionadas e ler as ações do mouse.
A maioria dos servidores conhece duas maneiras de autenticar conexões: o mecanismo de lista de hosts ( xhost
) e o mecanismo de magic cookie ( xauth
). Em seguida, há ssh
, o shell seguro, que pode encaminhar conexões X.
Observe que alguns servidores X podem ser configurados para não escutar na porta TCP usual com o argumento -nolisten tcp
. Notavelmente, a configuração padrão do Debian GNU / Linux é desabilitar a escuta do servidor X na porta TCP. Se você deseja usar o X remoto em um sistema Debian, você deve reativá-lo alterando a maneira como o servidor X é iniciado. Veja /etc/X11/xinit/xserverrc
para começar.
Xhost
Xhost permite acesso com base em nomes de host. O servidor mantém uma lista de hosts que podem se conectar a ele. Também pode desabilitar a verificação de host completamente. Cuidado: isso significa que nenhuma verificação é feita, então cada host pode se conectar!
Você pode controlar a lista de hosts do servidor com o programa xhost
. Para usar esse mecanismo no exemplo anterior, faça:
light$ xhost +dark.matt.er
Isso permite todas as conexões do host dark.matt.er. Assim que seu cliente X fizer sua conexão e exibir uma janela, por segurança, revogue as permissões para mais conexões com:
light$ xhost -dark.matt.er
Você pode desativar a verificação de host com:
light$ xhost +
Isso desativa a verificação de acesso ao host e permite que todos se conectem. Você nunca deve fazer isso em uma rede na qual você não confia em todos os usuários (como a Internet). Você pode reativar a verificação de host com:
light$ xhost -
xhost -
por si só não remove todos os hosts da lista de acesso (isso seria completamente inútil - você não seria capaz de se conectar de qualquer lugar, nem mesmo de seu host local).
Xhost é um mecanismo muito inseguro. Não distingue entre usuários diferentes no host remoto. Além disso, nomes de host (endereços, na verdade) podem ser falsificados. Isso é ruim se você estiver em uma rede não confiável (por exemplo, já com acesso discado PPP à Internet).