Após ssh sem -X para uma máquina, é possível alterar $ DISPLAY para fazê-lo funcionar como ssh -X?
772
Após sshsem -Xpara uma máquina, é possível alterar algumas configurações (por exemplo $DISPLAY) para que funcione como ssh -X? Se não, qual o motivo? Obrigado.
Você pode criar uma segunda conexão com o encaminhamento X11 habilitado e, em seguida, também pode usar a DISPLAYvariá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
Infelizmente, sshnão faz nada para conter os encaminhamentos X11 (ou outros) para o processo/sessão que iniciou ou para o usuário que executa na máquina remota (por exemplo, usando soquetes Unix com/sem verificação de credenciais ou usando namespaces), e esses encaminhamentos são soquetes de escuta tcp simples aos quais qualquer pessoa na máquina remota pode se conectar; toda a segurança do encaminhamento X11 depende da autenticação X11.
X11 Encaminhamento Manual
A sshd_config(5)página de manual menciona que:
desabilitar o encaminhamento X11 não impede que os usuários encaminhem o tráfego X11, pois os usuários sempre podem instalar seus próprios encaminhadores.
Aqui está como você pode fazer isso manualmente.
Antes de tudo, certifique-se de desabilitar 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=:0na máquina local:
$ xauth list :0
ohzd/unix:0 MIT-MAGIC-COOKIE-1 a86982ddce0c1e1c1a8c5e8b2846e43b
Conecte-se à máquina remota sem nenhum encaminhamento X11:
Defina o $DISPLAYenvvar e adicione as informações de autenticação do local para a 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] por causa de uma correção de bug mal orientada , 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 que faça proxy do protocolo X11 (por exemplo xscope, ) terá que fazer sua própria verificação de cookies de autenticação x11 (da maneira como o ssh faz), a menos que queira abrir um buraco no servidor X11.
Você pode criar uma segunda conexão com o encaminhamento X11 habilitado e, em seguida, também pode usar a
DISPLAY
variável de ambiente da segunda conexão na primeira.Na 1ª janela:
Na 2ª janela:
De volta à 1ª janela:
Infelizmente,
ssh
não faz nada para conter os encaminhamentos X11 (ou outros) para o processo/sessão que iniciou ou para o usuário que executa na máquina remota (por exemplo, usando soquetes Unix com/sem verificação de credenciais ou usando namespaces), e esses encaminhamentos são soquetes de escuta tcp simples aos quais qualquer pessoa na máquina remota pode se conectar; toda a segurança do encaminhamento X11 depende da autenticação X11.X11 Encaminhamento Manual
A
sshd_config(5)
página de manual menciona que:Aqui está como você pode fazer isso manualmente.
Antes de tudo, certifique-se de desabilitar qualquer controle de acesso baseado em host ou usuário que ignore o mecanismo de autenticação x11 [1]:
Em seguida, mostre as informações de autenticação
DISPLAY=:0
na máquina local:Conecte-se à máquina remota sem nenhum encaminhamento X11:
Abra a linha de comando via
~C
e adicione um encaminhamento remoto da porta6000+43
para o soquete unix correspondente ao display:0
:Defina o
$DISPLAY
envvar e adicione as informações de autenticação do local para a máquina remota:Agora você está pronto para ir:
[1] por causa de uma correção de bug mal orientada , 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 que faça proxy do protocolo X11 (por exemploxscope
, ) terá que fazer sua própria verificação de cookies de autenticação x11 (da maneira como o ssh faz), a menos que queira abrir um buraco no servidor X11.