Мне удобно использовать функцию ProxyCommand в ssh, и я могу использовать ее для переключения между несколькими хостами-бастионами, чтобы эффективно достичь конечного хоста. Но я просто не могу понять, как это работает на самом деле.
Например, У меня есть следующий файл конфигурации.
Host final
Hostname final.com
Port 22
AgentForwarding yes
User guestuser
ProxyCommand "ssh user@bastion.com -W %h:%p"
Я понимаю, что для подключения к хосту final
ProxyCommand будет работать до подключения к final.com
. Но я все еще не могу понять порядок соединений.
А что делает опция -W %h:%p
? Я понимаю, что это особенность netcat и похожа на nc %h %p
.
Итак, насколько я понимаю, здесь последовательность операций. Пожалуйста, дайте мне знать, если я ошибаюсь. Я буду использовать файл конфигурации, указанный выше в моем примере.
- Пользователь вводит
ssh final
- Соединение ssh с bastion.com создано.
- Туннель netcat создается от bastion.com до порта 22 final.com. Стандартный netcat подключен к оболочке, полученной в связи с bastion.com.
- Итак, теперь у нас есть соединение из нашей системы с final.com. Первая половина этого соединения - это ssh-соединение нашей системы с bastion.com. Вторая половина этого соединения - туннель netcat от bastion.com до final.com.
- Теперь
ssh final
команда принимает вышеуказанное соединение в качестве прокси и туннелирует свои данные через это существующее соединение.
Кроме того, я также хотел бы знать, известен ли этот метод также как ssh-стекирование ?
добавлены переносы строк
источник