В предыдущих ответах упоминается, как использовать директиву ProxyJump (добавлена в OpenSSH 7.3) для соединения через промежуточный сервер (обычно называемый хостом бастиона), но упоминается просто как аргумент командной строки.
Если это не машина, к которой вы не будете подключаться в будущем, лучше всего настроить ее на ~/.ssh/config
.
Я бы поставил файл как:
Host office-machine
Hostname yochay-machine.internal.company.local
ProxyJump bastion-machine
Host bastion-machine
Hostname organization-server.company.com
...
Если вы используете более раннюю версию OpenSSH, которая не поддерживает ProxyJump, вы должны заменить ее на эквивалентную:
ProxyCommand ssh -W %h:%p bastion-machine
и если ваша локальная версия ssh была действительно древней, которая не поддерживала -W
:
ssh bastion-machine nc %h %p
хотя этот последний требует, чтобы машина бастиона была nc
установлена.
Прелесть ssh в том, что вы можете настроить каждый пункт назначения в файле, и они будут складываться очень хорошо. Таким образом, вы работаете в office-machine
качестве имени хоста во всех инструментах (ssh, scp, sftp ...), так как они были прямыми, и они выяснят, как подключиться, основываясь на ssh_config. Вы также можете иметь подстановочные знаки, например, Host *.internal.company.local
чтобы все хосты, оканчивающиеся таким образом, проходили через определенный бастион, и это будет применяться ко всем из них. После правильной настройки единственное различие между выполнением однопроходных соединений или двадцати будет в более медленном времени соединения.