использование 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
Теперь вы сможете прозрачно добраться до компьютера 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
примерах.