Tendo o próprio túnel ssh para acesso remoto de uma terceira máquina

Tendo o próprio túnel ssh para acesso remoto de uma terceira máquina

Estou lutando para entender se e como o seguinte é possível.

Digamos que eu tenha uma máquina T(destino) que desejo acessar remotamente (de preferência via ssh).

Testá atrás de um roteador/firewall Re não consigo encaminhar a porta (por exemplo) 22para Ra porta 22 de T. Em uma palavra, nenhum sshacesso direto Té possível.

Agora diga isso

  • Eu tenho uma máquina Ana qual tenho controle total.

  • Eu posso ssh de Tto A, ou seja

      T:  ssh user@A
    

    consegue.

P1:posso usar isso para acessar o shell de Tfrom A? Ou seja, posso usar a conexão criada de Tto Apara usar Tfrom A?

   T ---> ssh ----> A          # this is possible               

   T <--- ? shell ? <---- A    # is this possible?

Q2:Se1º trimestreé possível:

Digamos que eu tenha uma terceira máquina L(por exemplo, meu laptop) e pretendo ter acesso ao shell do Tfrom L. Posso Aacessar o túnel ssh L?

   T ----> ssh ----> A <---- ssh < ---- L

   T <-------  ?? %&£€ ?? <------- L       # is this possible?

qualquer ajuda será apreciada.

Responder1

É claro que isso é possível.

1º trimestre: o tunelamento reverso sobre ssh é possível?

Sim. Aqui estão algumas respostas sobre o tunelamento de reserva:

2º trimestre: tunelar um túnel reservado é possível?

Sim, este é basicamente um túnel ssh sobre um túnel. Aqui estão algumas respostas sobre túnel em túnel:

Responder2

Eu faço isso o tempo todo, na outra direção. Primeiro, estabeleça um túnel SSH reverso de T para localhost em A, depois faça um túnel de L para o lado A do túnel AT, depois use ssh para conectar-se à parte local do túnel LA e você se conectará remotamente através do LAT.

No meu exemplo, A está escutando conexões ssh na porta 22123.
Localmente eu uso o nome de usuário user, remotamente é user.name.
Eu tenho chaves chamadas localmente ~/.ssh/A_id_rsa e ~/.ssh/T_id_rsa para conectar às 2 máquinas A e T respectivamente como user.name.

Aqui está um script para conectar o túnel TA, que deve ser executado em T.

#!/bin/bash

SSH_KEY="-i /home/user.name/.ssh/A_id_rsa"
REMOTE_USER="nome do usuário"
GATEWAY_MACHINE="A.domínio.com"
GATEWAY_SSH_PORT="22123"

ssh -N -R2201:127.0.0.1:22 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}

Aqui está um script para conectar o túnel LA, que deve ser executado em L.

#!/bin/bash

SSH_KEY="-i /home/user/.ssh/A_id_rsa"
REMOTE_USER="nome do usuário"
GATEWAY_MACHINE="A.domínio.com"
GATEWAY_SSH_PORT="22123"

ssh -N -L2201:127.0.0.1:2201 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}

Em seguida, adiciono o seguinte ao arquivo /etc/hosts do meu host local, para que possa me referir ao lado local do túnel como T: -

127.0.0.1T

Então eu tenho esse script, em nosso exemplo chamado /usr/local/bin/T para conectar-se a ele

#!/bin/bash

SSH_KEY="-i /home/user/.ssh/T_id_rsa"
REMOTE_USER="nome do usuário"

ssh -p 2201 ${SSH_KEY} ${REMOTE_USER}@T

O túnel TA é reverso, então -R, o tunelizador LA é local, então -L. O -N nos scripts impede que eles iniciem um shell para A, então eu normalmente executo isso, seja com um & para executá-lo em segundo plano ou pressione ctrl+Z e execute bg para fazer isso, depois de inserir a senha para desbloquear A_id_rsa se ainda não o tiver carregado em meu chaveiro.

informação relacionada