As respostas anteriores mencionam como usar a diretiva ProxyJump (adicionada no OpenSSH 7.3) para conectar-se através de um servidor intermediário (geralmente chamado de host bastião), mas menciona-a apenas como argumento de linha de comando.
A menos que seja uma máquina na qual você não se conectará no futuro, a melhor coisa é configurá-la ~/.ssh/config
.
Eu colocaria um arquivo como:
Host office-machine
Hostname yochay-machine.internal.company.local
ProxyJump bastion-machine
Host bastion-machine
Hostname organization-server.company.com
...
Se você estiver usando uma versão anterior do OpenSSH que não oferece suporte ao ProxyJump, substitua-a pelo equivalente:
ProxyCommand ssh -W %h:%p bastion-machine
e se sua versão local do ssh era realmente antiga e não suportava -W
:
ssh bastion-machine nc %h %p
embora este último exija que a máquina do bastião esteja nc
instalada.
A beleza do ssh é que você pode configurar cada destino no arquivo, e eles serão empilhados muito bem. Assim, você acaba trabalhando office-machine
como o nome do host em todas as ferramentas (ssh, scp, sftp ...) como se fossem conexões diretas, e eles descobrirão como se conectar com base no ssh_config. Você também pode ter curingas Host *.internal.company.local
para fazer com que todos os hosts que terminem assim passem por um bastião específico, e isso se aplicará a todos eles. Uma vez configurada corretamente, a única diferença entre fazer conexões de um salto ou vinte seria o tempo de conexão mais lento.