Área de trabalho remota sobre o túnel reverso do SSH para substituir o TeamViewer

13

Eu 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, tenho usado o Team Viewer para fazer login na área de trabalho remota. Gostaria de obter resultados semelhantes sem o Team Viewer.

Veja como meu túnel SSH se parece:

laptop--->nat--->middleman<--nat<--desktop

Todas as máquinas estão rodando Linux (principalmente o Kubuntu 12.04 ou OpenSuse 12.3). Não consigo alterar nenhuma porta nem fazer alterações de configuração nos roteadores nat.

Descreverei meu túnel SSH, porque a compreensão que parece ser necessária na solução do problema do VNC / área remota é o cerne 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 [email protected]

Em relação a essa perna:

laptop--->nat--->middleman

Eu posso me conectar ao intermediário da seguinte forma:

me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman  

No entanto, o que realmente preciso fazer é conectar-se diretamente à área de trabalho, não ao intermediário. Para fazer isso eu uso o netcat ("nc") no intermediário. Com base em este parece que nc é obrigató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"

Depois, conecto-me a "área de trabalho" em uma etapa:

me@laptop:~$ ssh family_desktops -p 1234

(Consegui esse trabalho com base na ajuda aqui e aqui e outras questões relacionadas eu perguntei. Eu fiz uma tonelada de perguntas sobre este tópico porque eu tenho lutado com isso por muitas semanas.)

Com essa conexão SSH, eu atinjo um shell totalmente funcional no meu computador chamado desktop . Perfeito.

Agora, só preciso de uma solução de área de trabalho remota semelhante a VNC (ou semelhante ao TeamViewer) neste túnel SSH. Como?

Eis o que tentei até agora:

intermediário < - nat < - área de trabalho

autossh -M 5235 -N -f -R 1235:localhost:5901 [email protected]

com essa conexão estabelecida:

x11vnc -autoport 5901 

Eu assisto para garantir que ele se conecte à porta 5901, o que acontece.

laptop --- > nat --- > intermediário < - nat < - área de trabalho

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

Isto dá um erro de "servidor não encontrado"

Eu tentei várias variações no ProxyCommand, nenhuma delas obteve sucesso. Obviamente, estou supondo sobre quais parâmetros devem estar em ProxyCommand e quais devem estar na linha de comando ssh. Posso ver alguns problemas potenciais com a minha configuração, mas não consegui descobrir o que fará tudo funcionar.

P.S. Como mencionado, fiz várias perguntas sobre isso. Alguns desses me levaram para mais perto da solução e formam a base da minha questão atual. Outra das minhas perguntas anteriores sobre este tópico apenas mostra minha ignorância e incapacidade de fazer a pergunta da maneira correta. Neste ponto, esta questão atual representa a minha melhor capacidade para indicar qual é o meu problema e qual é a minha solução desejada, mas algumas das minhas outras perguntas ainda estão em aberto. Aqui está uma que é relevante.

    
por MountainX 09.07.2013 / 21:58

2 respostas

3

Você pode tentar fazer o segundo passo sem fazer o nc? Isso é - faça o VNC com apenas o -L e -R. Eu acredito que o problema é que sua sessão de netcat está se conectando de volta a uma já aberta. Então, ao fazer o VNC, não use o netcat.

    
por 11.07.2013 / 04:48
2

Em vez de ProxyCommand, você deve definir "gatewayports yes" para o seu intermediário sshd.conf.

  1. Em seguida, pegue o túnel remoto da área de trabalho para o intermediário e abra a porta tcp x em intermediário e vnc no local.
  2. Então pegue o túnel local do laptop para o intermediário abrindo a porta vnc para você localhost e encapsulando-o para x.
  3. Em seguida, conecte-se ao localhost: vnc, para que ele seja encaminhado via túnel local para intermediário e túnel remoto para laptops vnc.

Depois de trabalhar, saiba mais sobre as configurações mais seguras do gatewayports.

    
por 11.03.2017 / 13:07