Encaminhamento X11 sobre SSH se a configuração do servidor não permitir

10

Considere uma situação em que estou efetuando login pelo SSH da máquina A para a máquina B, tenho uma sessão X na máquina A e quero executar um programa X na B.

ssh -X Btorna esse trabalho transparente. Mas e se a configuração do servidor faltar X11Forwarding yes, eu não tenho permissões de root no servidor e o administrador do servidor é indiferente?

Obviamente, é possível encaminhar a conexão X11, pois posso transferir o que eu quiser pelo canal SSH. De fato, se o servidor X local permitir conexões TCP, é tão fácil quanto ssh -R 6010:localhost:6000(ser ajustado para os números de exibição). E o caso comum em que o servidor X local apenas permite conexões de soquete? Como faço para encaminhar o X de maneira conveniente e segura, com um mínimo de requisitos de instalação (especialmente em B)?

Gilles 'SO- parar de ser mau'
fonte

Respostas:

2

A resposta da @Demi é boa, mas acho que preenchê-la seria uma grande ajuda.

  • local - a máquina local que serve um Xserver.
  • remote - a máquina remota que atende ao aplicativo que direciona os dados para o Xserver

Remoto /etc/ssh/sshd_config:

X11Forwarding no
X11DisplayOffset 10
X11UseLocalhost yes

O controle remoto ~/.Xauthorityestá vazio ou não existe

No local:

Xephyr -ac -screen 1280x800 -br -reset   :2 &
DISPLAY=:2 ssh  -fR 6010:/tmp/.X11-unix/X2  user@remote "DISPLAY=:10 xeyes"

No teste, o local estava executando o Ubuntu 18.05, o remoto estava executando o Debian Jesse.

Craig Hicks
fonte
5

O protocolo X11 fala ao falar com uma porta tcp é diferente ao falar com um soquete?

Talvez você possa combinar seu próprio uso sugerido de ssh -R 6010:localhost:6000trazer os dados do X11 para o encaminhamento de porta e, em seguida, conectar o gabarito local entre a porta tcp e o ouvinte de soquete X11 com nc como:

nc -l -p 6000 > /tmp/.X11-unix/X0
Caleb
fonte
Sim, essa é a ideia. Mas eu esperava uma resposta dizendo "coloque isso no .ssh/configlado do cliente e no .profilelado do servidor e depois execute ssh B".
Gilles 'SO- stop be evil'
1
Existe uma resposta fácil "coloque isso na sua configuração", o problema é que você descarta isso nas qualificações da sua pergunta, porque a opção necessária está no lado sshd_config das coisas em B. Você está tentando contornar um bloco colocado para dificultar a abertura inadvertida de um problema de segurança.
Caleb
3
Estou direcionando o caso (na minha experiência muito comum) em que o administrador não se importa e apenas deixou as configurações padrão no lugar. O encaminhamento do X11 não é proibido pela política, é apenas um inconveniente pela indiferença do administrador de sistemas. De qualquer forma, o encaminhamento do X11 permite que o servidor ataque o cliente; portanto, bani-lo do lado do servidor não faz muito sentido.
Gilles 'SO- stop be evil'
@ Gilles Eu concordo que o padrão realmente não protege contra nada de útil. Então, devemos fazer lobby para que o padrão seja alterado a montante?
Caleb
Para mim, /tmp/.X11-unix/X0é um soquete de domínio unix, não um FIFO, portanto, qualquer tentativa de redirecionamento termina com ENXIO: No such device.
Samveen
2
  1. Gire um servidor X adicional usando o Xephyr. Isso é por segurança - evita que o sistema remoto comprometa o seu.

  2. Use SSH para encaminhar um soquete remoto para o soquete Xephyr. O SSH também suporta o encaminhamento de soquetes Unix.

  3. Defina as variáveis ​​de ambiente no servidor remoto corretamente.

Demi
fonte