Quando o SSH localmente no meu computador (não pergunte, é uma solução alternativa), não consigo iniciar aplicativos gráficos sem executar:
export DISPLAY=:0.0
Se eu executar isso primeiro e depois executar um aplicativo gráfico, tudo dará certo. Caso contrário, não funcionará, não há tela para anexar.
Existe um comando para listar todas as telas disponíveis (ou seja: todos os valores possíveis) em uma máquina?
( DISPLAY=:0 yourapp & )
.w
. Mais informações: lista os nomes de exibição X existentes?Respostas:
Se você deseja que a conexão X seja encaminhada por SSH, é necessário ativá-la no servidor e no cliente. (Dependendo da distribuição, ela pode ser ativada ou desativada por padrão.) No lado do servidor, verifique se você está
X11Forwarding yes
dentro/etc/sshd_config
(/etc/ssh/sshd_config
ou onde quer que esteja o arquivo de configuração). No lado do cliente, passe a-X
opção para ossh
comando ou insiraForwardX11
seu~/.ssh/config
.Se você executar
ssh -X localhost
, deverá ver que$DISPLAY
é (provavelmente)localhost:10.0
. Contraste com:0.0
, que é o valor quando você não está conectado por SSH. (A.0
peça pode ser omitida; é um número de tela, mas várias telas raramente são usadas.) Existem duas formas de exibições X que você provavelmente encontrará::
.:
.Com
ssh -X localhost
, você pode acessar o servidor X pelos dois monitores, mas os aplicativos usarão um método diferente::NUMBER
acessa o servidor por soquetes locais e memória compartilhada, enquantoHOSTNAME:NUMBER
acessa o servidor por TCP, que é mais lento e desativa algumas extensões.Observe que você precisa de uma forma de autorização para acessar um servidor X, chamado cookie e normalmente armazenado nos bastidores do arquivo
~/.Xauthority
. Se você estiver usando ssh para acessar uma conta de usuário diferente ou se sua distribuição colocar os cookies em um arquivo diferente, você poderá descobrir queDISPLAY=:0
isso não funciona na sessão SSH (masssh -X
funcionará, se estiver ativado no servidor; você nunca precisa mexerXAUTHORITY
ao fazerssh -X
). Se isso for um problema, você precisará definir aXAUTHORITY
variável de ambiente ou obter os cookies do outro usuário .Para responder sua pergunta real:
As exibições locais correspondem a um soquete
/tmp/.X11-unix
.Os monitores remotos correspondem às portas TCP abertas acima de 6000; o acesso ao número de exibição N na máquina M é feito conectando-se à porta TCP 6000 + N na máquina M. Na própria máquina M:
(O restante deste item é apenas de interesse acadêmico.)
De outra máquina, você pode usar
nmap -p 6000-6099 host_name
para analisar as portas TCP abertas no intervalo usual. Atualmente, é raro ter servidores X escutando em um soquete TCP, especialmente fora da interface de loopback.A rigor, outro aplicativo pode estar usando uma porta no intervalo normalmente usado pelos servidores X. Você pode saber se um servidor X está escutando, verificando qual programa tem a porta aberta.
Se isso mostra algo ambíguo
sshd
, não há como saber com certeza se é um servidor X ou uma coincidência.fonte
A exibição é o primeiro argumento para
Xorg
. Você podeps
entãoXorg
sair.Você pode fazer
awk
isso em qualquer formato que seja necessário.fonte
ps aux |grep X
funcionou melhor para mimw
mostra todos os que estão conectados e sua exibição.DISPLAY=:0 netsurf "https://medium.com/"
... ou useexport DISPLAY=:0
para compartilhar o var com o processo, não apenas com o shell[Edit: Eu executei uma instância do Xnest para ver se isso seria detectado - não é; captura apenas shells de login ('w' é a abreviação de 'who'). De volta à prancheta para mim.] [Edit: Found it:
]
fonte
ps xeww | grep DISPLAY=:1024
agora isso é estranho. Estou executando o chrome-remote-desktop na tela 20 também.w
não funciona se nenhum aplicativo estiver sendo executado no servidor x (incluindo nenhum gerenciador de janelas e nenhuma área de trabalho). Masls /tmp/.X11-unix
funciona.fará o trabalho listando todos os displays atuais. Também é possível ver as telas atribuídas para um usuário específico ($ usr) com:
fonte
ps e -u $USER | grep -Po " DISPLAY=[\.0-9A-Za-z:]* " | sort -u
?Na
/tmp
pasta também pode haver.X??-lock
arquivos??
indicando os números da sessão.Você precisa excluí-los se desejar reutilizar um número de sessão.
Você pode vê-los usando
ls -a
normalmente os arquivos que começam com a.
estão ocultos.fonte