Defina X11Forwarding yes
no arquivo de configuração do servidor SSH ( /etc/ssh/sshd_config
). Reinicie o servidor e execute ssh
na máquina cliente com a opção -X
ou -Y
(isso deve funcionar com o OpenSSH).
Estou tentando executar um programa GUI em uma máquina Ubuntu remota usando ssh.
Eu quero abrir, digamos Firefox ou Skype, em uma máquina que eu conectei via ssh.
Mas quando escrevo o login com user2 e escrevo sudo -u user1 firefox
, recebo uma mensagem de erro dizendo que nenhuma exibição é especificada.
A máquina está ligada e logada com user1, parece que não consigo fazer com que o Ubuntu reconheça que há uma GUI disponível.
Eu não me importaria com soluções alternativas, mas preferiria ajudar com este cenário específico.
Defina X11Forwarding yes
no arquivo de configuração do servidor SSH ( /etc/ssh/sshd_config
). Reinicie o servidor e execute ssh
na máquina cliente com a opção -X
ou -Y
(isso deve funcionar com o OpenSSH).
dbus-launch firefox&
Isso funcionou para mim no passado a partir de um shell, você poderia experimentá-lo via SSH.
O uso do sudo complica um pouco as coisas e requer alguns passos extras.
Se você configurou seu / etc / ssh / sshd_config como outros mencionaram com
X11Forwarding yes
depois ssh'n na caixa como user2 via
$ ssh -YC remote.example.com
Você deve conseguir executar aplicativos X remotos como usuário2. Uma maneira simples de testar isso em muitos sistemas baseados em X é executar
$ xlogo
É muito leve em comparação com algo como o firefox, embora o Firefox também funcione.
Quando tiver certeza de que o X está trabalhando via conexão ssh remota como usuário2, podemos fazê-lo funcionar com o sudo para user1. O problema é que quando você sudo ao user1 você está perdendo a autoridade para usar o redirecionamento remoto do X. Para contornar isso, primeiro como user2, faça o seguinte após efetuar login
$ echo $DISPLAY
localhost:17.0
$ xauth list
<snip>
carlisle/unix:17 MIT-MAGIC-COOKIE-1 161bda5fc81200a4e74e578009177fb8
Você deve ver uma linha que contém o mesmo número de exibição, no meu exemplo é 17. Você vai querer encontrar o número correspondente na saída da lista xauth. Em seguida, sudo para user1 e execute um comando xauth add para adicionar a linha auth que correspondeu acima
$ sudo su - user1
$ xauth add carlisle/unix:17 MIT-MAGIC-COOKIE-1 161bda5fc81200a4e74e578009177fb8
Agora você deve conseguir executar qualquer aplicativo que desejar.
$ xlogo # or any X app such as firefox
Se você receber um erro sobre não conseguir bloquear a autoridade ~ user2 / .Xa, precisará ajustar as permissões nesse arquivo antes de usar o sudo para alternar para user1. Não é exatamente seguro, mas você pode configurar as permissões de arquivo para o chmod 666 nesse arquivo para testar.