Quero abrir uma sessão de área de trabalho remota do meu laptop para a área de trabalho através do meu túnel SSH (reverso). Isso deve ser simples (ou pelo menos factível), certo? Até agora, eu estava usando o Team Viewer para fazer login na área de trabalho remota. Gostaria de obter resultados semelhantes sem o Team Viewer.
Aqui está a aparência do meu túnel SSH:
laptop--->nat--->middleman<--nat<--desktop
Todas as máquinas estão executando o Linux (principalmente o Kubuntu 12.04 ou o OpenSuse 12.3). Não consigo alterar nenhuma porta nem fazer alterações na configuração dos roteadores nat.
Descreverei meu túnel SSH porque entender que parece ser necessário para solucionar o problema do VNC / área de trabalho remota que é o coração da minha pergunta. Em relação a esta perna:
middleman<--nat<--desktop
... aqui está como é estabelecido:
autossh -M 5234 -N -f -R 1234:localhost:22 user@middleman.com
Em relação a esta perna:
laptop--->nat--->middleman
Posso me conectar ao intermediário da seguinte maneira:
me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman
No entanto, o que eu realmente preciso fazer é conectar-se diretamente à área de trabalho, não ao intermediário. Para fazer isso, uso o netcat ("nc") no intermediário. Com base nisso , parece que nc é necessário. Então, eu edito meu arquivo de configuração SSH no laptop para usar ProxyCommand e nc:
me@laptop:~/.ssh$ nano config
O conteúdo é:
Host family_desktops
ProxyCommand ssh middleman_fqdn nc localhost %p
User admin
PasswordAuthentication no
IdentityFile ~/.ssh/my_id_rsa
Onde middleman_fqdné como "middleman.com"
Então eu apenas conecto ao "desktop" em uma etapa:
me@laptop:~$ ssh family_desktops -p 1234
(Consegui esse trabalho com base na ajuda aqui e aqui e em outras perguntas relacionadas que fiz. Fiz uma tonelada de perguntas sobre esse tópico porque estou lutando com ele há muitas semanas.)
Com esta conexão SSH, chego a um shell totalmente funcional no meu computador rotulado desktop. Perfeito.
Agora só preciso de uma solução de área de trabalho remota tipo VNC (ou TeamViewer) sobre esse túnel SSH. Quão?
Aqui está o que eu tentei até agora:
intermediário <- nat <- desktop
autossh -M 5235 -N -f -R 1235:localhost:5901 user@middleman.com
com essa conexão estabelecida:
x11vnc -autoport 5901
Eu assisto para garantir que ele se conecte à porta 5901, o que faz.
laptop ---> nat ---> intermediário <- nat <- desktop
laptop ~ / .ssh / config:
Host family_desktops
ProxyCommand ssh -NL 5901:localhost:1235 middleman.com nc localhost 1235
User admin
PasswordAuthentication no
IdentityFile ~/.ssh/my_id_rsa
Configuração do túnel:
me@laptop:~$ sudo ssh family_desktops
Cliente VNC:
connect to localhost:5901
Isso gera um erro de "servidor não encontrado"
Eu tentei várias variações no ProxyCommand, nenhuma delas bem-sucedida. Obviamente, estou adivinhando quais parâmetros devem estar no ProxyCommand e quais devem estar na linha de comando ssh. Posso ver alguns problemas em potencial na minha configuração, mas não consegui descobrir o que fará tudo funcionar.
PS Como mencionado, eu fiz várias perguntas sobre isso. Alguns deles me levaram mais perto da solução e formam a base da minha pergunta atual. Outras perguntas anteriores sobre esse tópico mostram apenas minha ignorância e incapacidade de fazer a pergunta da forma correta. Neste ponto, esta pergunta atual representa minha melhor capacidade de declarar qual é o meu problema e qual é a minha solução desejada, mas algumas das minhas outras perguntas ainda estão abertas também. Aqui está um que é relevante.
desktopestá atrás de um roteador NAT e laptopatrás de um roteador NAT.