использование 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примерах.