Eu executei o comando abaixo no cliente ssh secureCRT :
$ DISPLAY=abc.xyz.com:0 ; export DISPLAY
$ /bin/xhost +abc.xyz.com
Mas dá este erro:
/bin/xhost: unable to open display "abc.xyz.com"
# cat /etc/system-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)
# whoami
root
Como solucionar esse erro?
Supondo que você tenha dois hosts:
Primeiro, você faz login no hostA e executa
xhost +hostB
nele para permitir que a exibição do hostA seja acessada pelo hostB. Em seguida, você faz login no hostB, executaDISPLAY=hostA:0 ; export DISPLAY
nele e inicia seu aplicativo.Observe também: essas são conexões X11 completamente não criptografadas de estilo antigo, que geralmente são desabilitadas por padrão nas distribuições Linux modernas. Se você quiser usar esses comandos, talvez seja necessário primeiro fazer algo no hostA para configurar seu servidor X11 para escutar as conexões de entrada pelo protocolo TCP, e não apenas pelos soquetes UNIX locais.
(Por muito tempo, isso foi feito adicionando uma
-nolisten TCP
opção à linha de comando do servidor X, e você precisaria remover essa opção para usar conexões X11 não criptografadas. Os servidores Xorg X modernos podem mudar o sentido dessas opções: talvez seja necessário adicione uma-listen TCP
opção explícita para habilitar conexões X11 não criptografadas não locais.)Em um sistema Linux/Unix,
DISPLAY=:0.0
refere-se a um monitor X11 que é acessível usando o socket UNIX/tmp/.X11-unix/X0
, portanto, é o primeiro (e geralmente o único) servidor X11 local. Em um sistema Windows, esse mecanismo não existe.O mecanismo de soquete UNIX é usado apenas quando está disponível na arquitetura do sistema local e a parte do nome do host da variável DISPLAY é uma cadeia vazia. Se um nome de host estiver listado, mesmo que seja "localhost", uma conexão TCP será usada.
Se uma conexão TCP for usada,
DISPLAY=hostname:X.Y
refere-se a um servidor X11 escutandohostname
na porta TCP (X+6000).Quando você inicia um servidor X11 baseado em Windows - talvez um comercial como o Reflection X, ou um gratuito como VcXsrv ou o clássico Xming , por padrão, ele começará a ouvir na porta TCP 6000 assim que for iniciado. As versões modernas podem usar o padrão de escuta
localhost
apenas para segurança; a alternativa clássica é escutar em todos os endereços IP do sistema.A maneira moderna e segura de usar o X11 é o encaminhamento X11 baseado em SSH. Quando você inicia um cliente SSH com o encaminhamento X11 habilitado, ele se conectará ao servidor X11 local no host do cliente SSH usando qualquer mecanismo disponível. Ele passará essa conexão para qualquer host ao qual você se conectar usando um subcanal seguro na conexão SSH.
Em seguida, o
sshd
daemon no host remoto começará a ouvir em uma porta TCP livre (geralmente na faixa de 6010+), configura umDISPLAY=localhost:X.0
(onde X = número da porta escolhida - 6000) e também coopera com o cliente SSH para configurarxauth
cookies automaticamente para você, se exigido pelo servidor X11 no lado do cliente SSH.No que diz respeito ao servidor X11 no host cliente, o tráfego X11 de entrada vem do processo do cliente SSH local, portanto, o
xhost
comando normalmente não é necessário no host cliente SSH.O resultado: você não precisa definir
DISPLAY
manualmente, nem oxhost
comando. Apenas certifique-se de que seu servidor X11 local esteja em execução, habilite o encaminhamento X11 em seu cliente SSH, conecte-se ao host remoto com SSH e inicie qualquer programa X11 GUI. As janelas desse programa simplesmente aparecerão em sua tela local. Ele apenas funciona.Isso pode ser uma revelação para alguém que está acostumado com o estilo clássico de configurar conexões X11.
Há mais de 15 anos, mostrei isso a um administrador de banco de dados velho e mal-humorado, que ocasionalmente precisava ir à sala do servidor para instalar o Oracle, pois os firewalls não permitiam as conexões X11 não criptografadas clássicas.
Ele me abraçou.