Quero fazer um túnel via ssh, um protocolo Xdmcp. Para acessar o seguro para um login remoto. Uma solução fácil pode ser o openvpn, mas quero tentar primeiro o socat+ssh. O servidor é Solaris 10 O cliente é Slackware 15.
No cliente
ssh -L 6667:localhost:6667 192.168.201.200
no servidor
socat tcp4-listen:6667,reuseaddr,fork UDP:192.168.201.200:177
no cliente
sudo socat udp4-listen:177,reuseaddr,fork tcp:localhost:6667
Agora no cliente eu executo o Xephyr e...
Xephyr -query localhost -screen 1024x767 :2
Usar o Xdcmp diretamente sem túnel funciona, mas não é seguro
Como você está dizendo ao Xephyr para enviar suas consultas ao host local, ele provavelmente especificará o endereço de rede do display nos pacotes XDMCP como 127.0.0.1. Seu pipeline socat->ssh->socat provavelmente não alterará o conteúdo do pacote.
(Não tenho certeza se essa conversão de protocolo de UDP para TCP e de volta para UDP funcionará sem quaisquer efeitos colaterais prejudiciais, mas presumo que sim.)
E então o gerenciador de exibição no Solaris recebe uma mensagem: "Olá, sou um monitor X11 em 127.0.0.1:2. Você está disposto a me gerenciar?". Supondo que o suporte XDMCP esteja ativado no final do Solaris e que a negociação XDMCP seja bem-sucedida, isso levaria o gerenciador de exibição a fazer uma conexão X11 clássica com a finalidade de exibir uma janela gráfica de login na porta TCP 6002 (com base no número de exibição). .. em 127.0.0.1, ou seja, no host Solaris . Obviamente, isso não chegará ao host do Slackware.
(Na prática, eu esperaria que um sistema Solaris 10 fosse padronizado como "nenhum acesso XDMCP permitido", mas presumo que a configuração necessária tenha sido feita.)
Você pode chegar a algum lugar se também configurar um encaminhamento TCP remoto SSH da porta 6002 do host Solaris para a porta local 6002 no host Slackware:
Mas o Xephyr é um servidor X11 moderno, portanto, por padrão, ele pode nem escutar conexões TCP de entrada. Talvez seja necessário instruí-lo explicitamente para escutar conexões TCP de entrada:
Com essas alterações, e assumindo que o lado Solaris esteja configurado corretamente para permitir XDMCP, você pode ter uma chance de isso funcionar. Talvez. Eu não prenderia a respiração, no entanto.
Um possível problema pode ser se o protocolo XDMCP retransmitir o nome de exibição apenas
:2
, então o gerenciador de exibição no lado do Solaris provavelmente assumiria que o soquete Unix at/tmp/.X11-unix/X2
poderia ser usado para conectar-se ao servidor de exibição de consulta. Se o host Solaris tiver um moderno o suficientesshd
, você também poderá encaminhá-lo... mas o uso de soquetes Unix faria com que qualquer aplicativo X11 (incluindo o gerenciador de exibição) assumisse que a exibição é de fato local e tentaria ativar Extensões de protocolo X11 que dependem de acesso à memória compartilhada para o servidor X11. Como as aplicações e o servidor estão localizados em computadores diferentes, o acesso à memória compartilhada seria obviamente impossível.Então você teria todas as fontes X11 necessárias para o gerenciador de janelas Motif do Solaris disponíveis para o seu servidor Xephyr X11 ...
Na verdade, encontrei esta solução alternativa