
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
).
T
está atrás de um roteador/firewall R
e não consigo encaminhar a porta (por exemplo) 22
para R
a porta 22
de T
. Em uma palavra, nenhum ssh
acesso direto T
é possível.
Agora diga isso
Eu tenho uma máquina
A
na qual tenho controle total.Eu posso ssh de
T
toA
, ou sejaT: ssh user@A
consegue.
P1:posso usar isso para acessar o shell de T
from A
? Ou seja, posso usar a conexão criada de T
to A
para usar T
from 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 T
from L
. Posso A
acessar 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.