У попередніх відповідях згадується, як використовувати директиву 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
хочуть зробити так, щоб усі хости закінчувались таким чином, переходячи через певний бастіон, і це стосується всіх них. Після правильної конфігурації єдиною різницею між виконанням одного або двадцяти з'єднань є повільніші часи з'єднання.