Você não precisa de nenhum gatilho especializado em relayhost
. Tudo o que você precisa fazer é usar o encaminhamento de porta remota com ssh -R
em vez do encaminhamento de porta local com ssh -L
.
Agora, se eu entendi corretamente - seu problema é que nem localhost
nem host1
têm IP publicamente acessível - ambos estão atrás do NAT. Caso contrário, seria mais fácil criar um túnel de host1
para localhost
com ssh -R
e, em seguida, executar a segunda conexão SSH dentro desse túnel.
Se tivermos que usar o relé, isso pode ser feito nas etapas a seguir. Para maior clareza, vamos renomear sua localhost
machine para myhost
agora.
-
Execute isso em
host1
:ssh -R 12345:localhost:22 user@relayhost
Isso abrirá a porta
12345
onrelayhost
e, quando alguém se conectar a ela, os dados serão encaminhados para a porta SSH22
onhost1
. -
Agora, você pode se conectar à porta
12345
onrelayhost
demyhost
.ssh user@relayhost -p 12345
Caso você tenha um firewall restritivo em
relayhost
que proíbe o acesso externo à porta12345
, você pode usar o encaminhamento de porta local para abrir a porta localmente emmyhost
:ssh -N -L 56789:localhost:12345 user@relayhost
Em seguida, conecte-se a
host1
demyhost
:ssh user@localhost -p 56789
No entanto, não espere criar uma solução de rede permanente no encaminhamento remoto de portas (consulte: link para possíveis problemas futuros). Você deve considerar o uso da VPN com o servidor em relayhost
para a configuração de longo prazo.