Se você quiser acessar um servidor ssh atrás de outro servidor ssh, simplesmente use "ProxyCommand". Exemplo: adicione a .ssh / config
Host Alice
User myLoginAtAlice # optional
ProxyCommand ssh -o Compression=no gateway netcat -w 90 %h %p
ServerAliveInterval 30
Compression yes
Host gateway
HostName gateway.public.ip
User myLoginAtTheGateway # optional
Compression yes
Então, você pode simplesmente "ssh Alice" ou "rsync" ou "scp" diretamente usando "Alice" como nome do host. A magia está escondida para o cliente.
Isso permite que você reconfigure rapidamente o seu ssh caso a topologia / configuração da sua rede mude, e apenas mude o .ssh / config, ao invés de mudar todos os scripts.
Explicação: O ssh usa o comando dado como "comando do proxy" como transporte em vez de uma conexão TCP direta. O Netcat é uma ferramenta de rede que (entre milhões de outros recursos) simplesmente redireciona seu stdin / stdout para o host remoto especificado. Então, "ssh gateway nc sshserver 22" conecta você ao servidor ssh da máquina. % h é o nome do host e% p é a porta. Essa configuração permite que você especifique "Porta N" para alterar a porta sem alterar a linha ProxyCommand.
Eu ativo a compactação no computador final e desabilito a compactação externa, pois a compactação de dados criptografados ou compactados não reduz mais o volume de dados. Qualquer mexer com as configurações de compressão também é claro opcional.