Como iniciar um software GUI em um PC Linux remoto via SSH

109

Às vezes, preciso iniciar o XMBC media player ou outro software da GUI em um dos meus PCs (pequeno PC Xubuntu usado como centro de mídia).

Normalmente, faço isso iniciando um servidor X11vnc no PC remoto via SSH e depois conectando-me a um cliente Xvnc na área de trabalho do Xfce.

Existe uma maneira de iniciar um software GUI em um PC Linux remoto via SSH?

Obrigado!

Raben
fonte
Pode confirmar que a abordagem na resposta escolhida funcionará se o cliente remoto também for um Mac. Trabalhando com sucesso com o macOS Sierra.
Benjamin R

Respostas:

136

Sim. Você só precisa executar export DISPLAY=:0(ou qualquer que seja o número do visor remoto) na sua sessão ssh e os programas executados serão executados no visor remoto. Um exemplo rápido:

oli@bert:~$ ssh tim
oli@tim:~$ export DISPLAY=:0
oli@tim:~$ firefox

O Firefox agora está sendo executado no timvisor.

No entanto, quando você fecha sua sessão ssh, na maioria das vezes o aplicativo remoto é fechado. Se você deseja se desconectar do ssh, mas deixar o aplicativo em execução, é necessário iniciá-lo de uma maneira especial usando algo como tela (mantém a sessão ssh em execução em segundo plano) nohupou outro método. Para mais informações sobre isso , recentemente houve outra questão .

Você pode reduzir tudo isso em um comando que se conectará, exportará a exibição em linha e iniciará o aplicativo de uma maneira que não o feche após a morte da sessão ssh:

ssh tim "DISPLAY=:0 nohup firefox"
Oli
fonte
Ele disse No DISPLAY: this may not be what you want.quando eu tentei (eu tentei de abiword pela forma como `.
PyRulez
11
@PyRulez Observe a mensagem "ou qualquer que seja a tela remota como numerada" na primeira linha. Se não for o primeiro servidor gráfico, pode ser: 1 ou superior. Corra wpara ver quem está conectado e onde. Isso informa o número do DISPLAY também.
Oli
11
Como faço para ligá-lo novamente off
akabhirav
11
unset DISPLAY
Oli
7
às vezes você quer fazer o oposto e executar o aplicativo X localmente a ligação apenas com Y e, em seguida, executar o aplicativossh -Y <remoteip>
Postadelmaga