Respostas:
Você pode criar uma segunda conexão com o encaminhamento X11 ativado e também pode usar a DISPLAY
variável de ambiente da segunda conexão na primeira.
Na 1ª janela:
$ ssh user@host
user@host$ ...
Na 2ª janela:
$ ssh -Y user@host 'echo $DISPLAY; while sleep 3600; do :; done'
localhost:10.0
Voltar para a 1ª janela:
user@host$ export DISPLAY=localhost:10.0
user@host$ xterm
Infelizmente, ssh
nada faz para conter os encaminhamentos do X11 (ou outros) para o processo / sessão iniciado ou para o usuário executado como na máquina remota (por exemplo, usando soquetes Unix sem verificação de credenciais ou usando espaços de nome), e esses encaminhamentos são simples soquetes de escuta TCP, aos quais qualquer pessoa na máquina remota pode se conectar; toda a segurança do encaminhamento do X11 depende da autenticação do X11.
A página de sshd_config(5)
manual menciona que:
desativar o encaminhamento do X11 não impede que os usuários encaminhem o tráfego do X11, pois os usuários sempre podem instalar seus próprios encaminhadores.
Aqui está como você pode fazer isso manualmente.
Primeiro, certifique-se de desativar qualquer controle de acesso baseado em host ou usuário que ignore o mecanismo de autenticação x11 [1]:
$ xhost $(xhost | sed -n /:/s/^/-/p)
access control enabled, only authorized clients can connect
Em seguida, mostre as informações de autenticação DISPLAY=:0
na máquina local:
$ xauth list :0
ohzd/unix:0 MIT-MAGIC-COOKIE-1 a86982ddce0c1e1c1a8c5e8b2846e43b
Conecte-se à máquina remota sem nenhum encaminhamento X11:
$ ssh user@hzy64
user@hzy64's password:
[motd snipped]
Abra a linha de comando ~C
e adicione um encaminhamento remoto da porta 6000+43
ao soquete unix correspondente à exibição :0
:
hzy64$~C
ssh> -R 6043:/tmp/.X11-unix/X0
Forwarding port.
Defina o $DISPLAY
envvar e adicione as informações de autenticação do local à máquina remota:
hzy64$ export DISPLAY=localhost:43
hzy64$ xauth add $DISPLAY . a86982ddce0c1e1c1a8c5e8b2846e43b
xauth: file /home/user/.Xauthority does not exist
Agora você está pronto para ir:
hzy64$ xterm
[1] devido a uma correção incorreta de erros , o controle de acesso baseado no usuário é ativado por padrão no Debian via /etc/X11/Xsession.d/35x11-common_xhost-local
. Pior, é o único disponível por padrão no XWayland, onde também não pode ser desativado . Qualquer programa em que os proxies do protocolo X11 (por exemplo xscope
) tenham que fazer sua própria verificação de cookie x11 auth (da maneira que o ssh faz), a menos que queira abrir um buraco no servidor X11.
-X
seria um pouco melhor que -Y
, não é?
-X
, apenas com -Y
. as pessoas não percebem isso porque em muitos sistemas (por exemplo: debian) ForwardX11Trusted
está definido como yes
padrão, e as opções -X
e -Y
são equivalentes ;-)
change $DISPLAY to
. O título da pergunta atual não pode ser exibido na íntegra nos resultados da pesquisa, e alterar $ DISPLAY é realmente parte da resposta, não parte da pergunta.