Por causa dessa conversa, digamos que há duas máquinas chamadas lappy
e remotey
. O sistema lappy
é onde você executaria seus comandos ssh
. O sistema ao qual você está se conectando é remotey
.
1. Exibir GUIs de remotey em lappy
lappy .-,( ),-.
__ _ .-( )-. remotey
[__]|=| ---->( network )------> ____ __
/::/|_| '-( ).-' | | |==|
'-.( ).-' |____| | |
/::::/ |__|
NOTE: on lappy, 'ssh' to remotey, run GUI, see GUI on lappy
Os arquivos de configuração do seu shell provavelmente estão configurando a variável de ambiente DISPLAY=:0
. Você pode fazer o seguinte:
$ grep DISPLAY $HOME/{.bash*,.profile*}
Se isso não retornar nada, o sistema em que você está se conectando provavelmente é o culpado. Dê uma olhada nesse diretório também.
$ grep DISPLAY /etc/profile.d/* /etc/bash*
Se você preferir deixar isso, pode substituir esse comportamento instruindo ssh
a redirecionar o tráfego X de volta ao seu sistema cliente, assim:
$ ssh -X user@remoteserver
Exemplo
Aqui eu tenho um servidor remoto que tem $DISPLAY
sendo definido como :0
semelhante ao seu.
$ ssh -X skinner "echo $DISPLAY"
:0
Mas, não importa, ainda posso invocar aplicativos X e exibi-los remotamente para o meu sistema que está executando os comandos ssh
. Eu nem preciso fazer o login, posso simplesmente executar GUIs diretamente assim:
$ ssh -X skinner xeyes
Como dica de bônus, você provavelmente desejará alterar quais códigos estão sendo usados, para ajudar a melhorar o desempenho do tráfego do X11 à medida que ele passa pelo seu túnel SSH.
$ ssh -c arcfour,blowfish-cbc -X skinner xeyes
2. Exibindo GUIs no remotey
lappy .-,( ),-.
__ _ .-( )-. remotey
[__]|=| ---->( network )------> ____ __
/::/|_| '-( ).-' | | |==|
'-.( ).-' |____| | |
/::::/ |__|
NOTE: on lappy, 'ssh' to remotey, run GUI, see GUI on remotey
Se você estiver usando SSH em remotey
de lappy
, mas quiser manter as GUIs exibidas em lappy
, basta soltar a opção -X
do seu ssh
invoke.
$ ssh -p 6623 [email protected]
3. Eliminando $ HOME / .ssh / config
Muitas vezes, o diretório $HOME/.ssh
de um usuário pode apresentar incógnitas sobre o que está acontecendo. Você pode silenciar temporariamente o uso do arquivo config
neste diretório, assim quando estiver realizando testes.
$ ssh -F /dev/null -p 6623 [email protected]
4. Eliminando as configurações do shell remoto
Você pode usar o teste a seguir para desabilitar temporariamente os arquivos de configuração do shell em remotey
da seguinte forma:
$ ssh -t -X -p 6623 [email protected] "bash --norc --noprofile"
Com o acima, nenhuma das configurações deve ser originada neste shell Bash, então você deve ser capaz de definir DISPLAY=:0
e, em seguida, exibir GUIs na área de trabalho do remotey.
Você pode usar o seguinte truque para ajudar a isolar o problema, primeiro removendo --noprofile
e tentando este comando:
$ ssh -t -X -p 6623 [email protected] "bash --norc"
seguido por este comando:
$ ssh -t -X -p 6623 [email protected] "bash --noprofile"
A primeira versão informará se o problema está em /etc/bashrc
& $HOME/.bashrc
cadeia de arquivos de configuração, enquanto a segunda versão informará se o problema está no arquivo de configuração $HOME/.bash_profile
.