Você pode usar uma VPN para se conectar à rede remota primeiro e depois se conectar diretamente via SSH. Isso pode ou não ser possível, pode ou não ser o que você deseja alcançar, mas funcionará.
Recomendo vivamente que exponha o menor número possível de máquinas à Internet através do mapeamento de portas! Especialmente se a autenticação interativa senha / teclado for permitida. As pessoas têm senhas fracas.
Outra sugestão pode ser conectar-se à sua máquina proxy e fazê-la explicitamente construir túneis para cada uma das máquinas que você deseja alcançar diretamente atrás do seu NAT. Você pode especificar um (ou mais) túneis SSH diretamente da linha de comando da seguinte forma:
ssh -L localport:hostnameOrIPofMachineBehindNAT:remoteMachinePort [email protected]
Onde localport
é o número da porta que você precisa se conectar ao seu localhost que será encaminhado para a máquina por trás do NAT, SSH encapsulado através do seu proxy.
hostnameOrIPofMachineBehindNAT
é o IP da LAN ou DNS da LAN da máquina não proxy que você deseja alcançar por trás do NAT. Frequentemente, em um intervalo de IP privado, como 10/8, 192.168 / 16 ou 172.16 / 12.
remoteMachinePort
é o número da porta do serviço ao qual você deseja se conectar na máquina remota por trás do NAT. No caso de SSH, é provável que esta seja a porta padrão 22.
[email protected] é trivial, eu acho.
Você pode se conectar à sua outra máquina assim de outro shell local:
ssh usernameOnRemoteBoxBehindNat@localhost
Como uma linha de comando pode facilmente tornar muito tediosa a digitação, é muito melhor incluir tudo isso, com quantas opções SSH você quiser, e quantos tunelamentos de portas você quiser no arquivo ~/.ssh/.ssh_config
. Isso reduzirá sua digitação para ssh connectionNickname
e sempre terá todos os encaminhamentos e opções definidos automaticamente.
Veja man 5 ssh_config
para uma explicação detalhada e lista de opções de configuração que você pode usar em ~/.ssh/.ssh_config
.