O que o @RolandW sugere está correto e funcionará se e somente se o servidor B na rede privada estiver diretamente acessível do servidor A, ie se e somente o servidor B for não atrás de um firewall e um roteador NAT.
Se qualquer uma dessas duas suposições for falsa, você terá que usar uma solução diferente. Nesse caso, como B não é acessado diretamente de A, você terá que estabelecer um túnel reverso de B para A e, em seguida, poderá acessar B de sua casa.
No servidor B,
-
Adicione esta linha a
/etc/rc.local
su -c /home/your_name/bin/auto your_name
-
Crie um arquivo executável chamado auto em
/home/your_name/bin
, chamadoauto
, com este conteúdo:#!/bin/sh /usr/lib/autossh/autossh -M 6321 -f -p 22 -2 -N -D -R 8100:localhost:22 your_name_o_server_A@IP_address_of_server_A -i /path/to/cryptokey/of_server_A
O comando autossh é um utilitário muito conveniente que reinicia automaticamente o túnel ssh a cada o tempo cai (queda de energia, reinicializações, o que for); Para fazer isso, ele usa uma porta (no meu caso, 6321) para verificar o status da conexão. Você pode muito bem usar uma porta TCP diferente de 6321 (mas maior que 1024!), Apenas certifique-se de que ela esteja aberta no servidor A.
O comando acima assume que você ativou a autenticação por meio de chaves criptográficas, o que definitivamente deve ser feito.
-
No servidor A, você terá que introduzir a seguinte linha
GatewayPorts yes
no arquivo
/etc/ssh/sshd_config
. Este exige privilégios sudo. -
Por fim, você pode se conectar em casa da seguinte forma:
ssh -YC -t -t -p 22 -i /path/to/cryptkey/of_server_A \ your_name_o_server_A@IP_address_of_server_A \ "ssh -Y your_name_on_server_B@localhost -p 8100 -i /path/to/cryptkey/of-server_B"
É claro que será conveniente estabelecer aliases para tornar a chamada acima mais rápida.