Використовуйте ProxyCommand
Див man ssh_config. Я рекомендую використовувати ProxyCommand. Візьмемо ваш оригінальний сценарій:
- Комп'ютер A (ваш комп'ютер)
- Комп'ютер B (ім'я хоста проксі-сервера)
- Комп'ютер C (доступний лише через SSH з комп’ютера B)
Редагуйте ~/.ssh/configза допомогою наступного вмісту.
Host computerb
HostName <hostname or IP of Computer B>
Host computerc 192.168.35.*
ProxyCommand ssh computerb nc -w 180 %h %p
Тепер ви зможете прозоро дістатися до Computer C. Наприклад
ssh computerc
Переваги цього методу
Більш безпечний
Вам потрібен лише ваш приватний ключ, щоб він знаходився на комп’ютері A (на вашому комп’ютері). ncКоманда буде виступати в якості проксі - сервера , в якому SSH буде шифрувати трафік через. Сюди входить аутентифікація. Дуже погана ідея розповсюдження вашого приватного ключа на декількох серверах (оскільки будь-який компрометований сервер із приватним ключем врешті-решт компрометує ваш приватний ключ).
Збіг кількох напрямків
Можна скористатися декількома комп'ютерами призначення, використовуючи Host. Один комп'ютер або будь-який комп'ютер у певній мережі (наприклад, 192.168.35.0/24у наведеному вище прикладі) для проксі через комп'ютер B. Він також виконує функцію псевдоніму.
ssh 192.168.35.27
У наведеному вище прикладі він проксі через комп'ютер B потрапить на IP-адресу.
Проксі-ланцюги ланцюга Дейзі
Використовуючи цей метод, ви можете вирізати стільки автоматичних проксі, скільки потрібно. наприклад, ви можете додати комп'ютер D, який доступний лише від комп'ютера C, і він буде працювати прозоро.
Host computerd
ProxyCommand ssh computerc nc -w 180 %h %p
ssh computerdавтоматично проксі через комп'ютер C та комп’ютер B у наведених вище ssh_configприкладах.