Використовуйте 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
прикладах.