O que você está se referindo é "SSH REMOTE FORWARDING", e é explicado corretamente no " man ssh ", com relação à opção " -R ".
> man ssh
[...]
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host is to
be forwarded to the given host and port on the local side.
This works by allocating a socket to listen to port on the remote
side, and whenever a connection is made to this port, the
connection is forwarded over the secure channel, and a connection is
made to host port hostport from the local machine.
[...]
No seu contexto, onde:
- uma caixa Linux A (LINUX_BOX_A) dentro de uma LAN atrás de um firewall.
- um servidor Linux B (SERVER_B) com um IP fixo acessível a partir da Internet
O encaminhamento remoto do SSH pode ser usado para acessar o LINUX_BOX_A de SERVER_B. A única condição é: LINUX_BOX_A DEVE poder se conectar via SSH a SERVER_B.
Para atingir esse objetivo, você precisa:
- em LINUX_BOX_A:
LINUX_BOX_A:~ $ ssh -R 2222:localhost:22 user@SERVER_B
isto irá abrir uma conexão ssh de LINUX_BOX_A para SERVER_B que será usada para a conexão remota de entrada.
Após a conexão ssh acima ser estabelecida, você pode:
- em SERVER_B:
SERVER_B:~ $ ssh -p 2222 user@localhost
tal conexão-ssh, lançada em SERVER_B, será direcionada para a porta 2222 escutando no localhost que ... é ligado à conexão ssh anterior. Então, isso será uma "conexão ssh dentro de outra conexão ssh".
Algumas notas adicionais:
-
considere que, se a primeira conexão ssh expirar e / ou cair por qualquer motivo (incluindo: morto por firewall local, devido a inatividade), você não conseguirá redirecionar remotamente / remotely_connect; / p>
-
como é importante deixar a primeira conexão ssh ativa por muito tempo, você pode achar útil lançar tal ssh dentro de um " tela " sessão
Uma nota final: Obviamente, todos os itens acima têm algumas implicações de segurança (potencialmente graves) que estão fora do escopo desta resposta.