A solução abaixo funcionará da seguinte maneira:
Local .-,( ),-.
__ _ .-( )-. Gateway RemoteX
[__]|=| ---->( internet )-------> __________ ------> ____ __
/::/|_| '-( ).-' [_...__...°] | | |==|
'-.( ).-' |____| | |
/::::/ |__|
Você pode fazer isso através do recurso ProxyCommand
do ssh. Adicione o seguinte ao seu arquivo $HOME/.ssh/config
. Crie-o se não existir apenas com este conteúdo:
Host RemoteX
User userint
ProxyCommand ssh userext@Gateway nc RemoteX %p
Host RemoteY
User userint
ProxyCommand ssh userext@Gateway nc RemoteY %p
Você se conecta aos diferentes servidores remotos internos assim:
$ ssh RemoteX
-or-
$ ssh RemoteY
Esta é a ponta do iceberg no que diz respeito a esse recurso. Veja este P & D de Perguntas e Respostas intitulado: , para mais detalhes.
NOTA: O método acima está fazendo uso de uma ferramenta chamada nc
(netcat), que deve estar nos repositórios de qualquer das principais distribuições.
Exemplo complexo
-
Uma estrofe
Host
, muitos hosts.Host *.mydom.com * ProxyCommand ssh externalserver nc %h %p
-
Uma estrofe "Hosts" para muitos usuários.
Adicione a sub-rotina
Hosts
ao arquivo/etc/ssh/ssh_config
do sistema para que qualquer pessoa que faça login na caixa possa utilizá-lo.
E se o IP do gateway mudar
Se você tem a situação em que os sistemas no final "remoto" flutuam, você pode usar um serviço DNS dinâmico (DDNS) como noip . Há dúzias desses serviços, alguns gratuitos e outros pagos.
A idéia básica com esses serviços é que eles lhe fornecerão um nome estático, como me.noip.org
, e você executará uma pequena ferramenta de daemon no cliente "remoto". No seu caso, poderia ser o sistema Gateway ou até mesmo um dos sistemas remotos. Esse daemon obteria o IP do Gateway que atualmente está designado na Internet e o encaminha para o serviço DDNS, que o listaria como o IP atual para me.noip.org
. À medida que muda, é atualizado ao longo do tempo.