Eu faço isso o tempo todo, na outra direção. Em primeiro lugar, estabeleça um túnel SSH reverso de T para localhost em A, em seguida, tunelamento de L para o lado A do túnel AT, então use ssh para conectar-se à parte local do túnel L-A e você se conectará remotamente através de L-A-T.
No meu exemplo, A está escutando as conexões ssh na porta 22123.
Localmente eu uso o usuário username, remotamente é user.name.
Eu tenho chaves localmente chamadas ~ / .ssh / A_id_rsa e ~ / .ssh / T_id_rsa para conectar as duas máquinas A e T respectivamente como user.name.
Aqui está um script para conectar o túnel T-A, que deve ser executado no T.
#!/bin/bash
SSH_KEY="-i /home/user.name/.ssh/A_id_rsa"
REMOTE_USER="user.name"
GATEWAY_MACHINE="A.domain.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 L-A, que deve ser executado em L.
#!/bin/bash
SSH_KEY="-i /home/user/.ssh/A_id_rsa"
REMOTE_USER="user.name"
GATEWAY_MACHINE="A.domain.com"
GATEWAY_SSH_PORT="22123"
ssh -N -L2201:127.0.0.1:2201 -p ${GATEWAY_SSH_PORT} ${SSH_KEY} ${REMOTE_USER}@${GATEWAY_MACHINE}
Então eu adiciono o seguinte ao arquivo / etc / hosts do meu localhost, então eu posso me referir ao lado local do túnel como T: -
127.0.0.1 T
Então eu tenho este script, no nosso exemplo chamado / usr / local / bin / T para se conectar a ele
#!/bin/bash
SSH_KEY="-i /home/user/.ssh/T_id_rsa"
REMOTE_USER="user.name"
ssh -p 2201 ${SSH_KEY} ${REMOTE_USER}@T
O túnel T-A é reverso, então -R, o túnel L-A é local, então -L. O N nos scripts, impede que eles iniciem um shell em A, então eu normalmente executo isso, com um & para executá-lo em segundo plano ou pressione ctrl + Z e execute bg para fazê-lo, depois de ter inserido a senha para desbloquear A_id_rsa, se eu não tiver carregado em minhas chaves já.