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.
desktop
está atrás de um roteador NAT e laptop
atrás de um roteador NAT.