Categories SSH 2 Comments
Краткое описание: в этом руководстве мы демонстрируем, как использовать команды SSH Proxy Jump и SSH ProxyCommand при подключении к серверу jump.
В нашем предыдущем руководстве о том, как настроить SSH-сервер перехода, мы рассмотрели концепцию хоста Bastion. Хост Bastion или сервер перехода - это промежуточное устройство, к которому сначала подключается SSH-клиент, прежде чем получить доступ к целевой удаленной системе Linux. Сервер SSH Jump действует как шлюз к вашим ИТ-ресурсам, тем самым уменьшая вероятность атаки.
Команды SSH Proxy Jump и Proxy Command определяют, как клиент подключается к удаленному серверу через jump service, jump host или сервер bastion. В этом руководстве подробно рассматриваются SSH Proxy Jump и SSH Proxy Command в Linux.
Cодержание
- Подключите удаленный Linux с помощью команды SSH Proxy Jump
- Настройка прокси-серверов в файле ~/.ssh/config
- Подключите удаленный Linux с помощью команды SSH ProxyCommand
- Настройка прокси-команды в файле ~/.ssh/config
- Вывод
Подключите удаленный Linux с помощью команды SSH Proxy Jump
Команда Proxy Jump обозначается флагом -J. Она была введена в OpenSSH server версии 7.3 и помогает вам установить соединение с удаленным объектом, перейдя через сервер bastion или jump server.
Приведенный ниже синтаксис показывает, как используется эта опция:
$ ssh -J <jump-server> <remote-target>
В случае нескольких серверов bastion или jump синтаксис принимает следующий формат:
$ ssh -J <jump-server-1> <jump-server-2> <remote-target>
В обоих случаях вы будете входить в систему как пользователь root на каждом этапе. Это не идеально по соображениям безопасности, поэтому вы можете захотеть создавать разных пользователей в каждом экземпляре.
Вы можете явно указать разных пользователей и порты SSH, как показано на рисунке.
$ ssh -J <user@jump-host:port> <user@remote-target:port>
Чтобы продемонстрировать флажок перехода прокси-сервера в действии, у нас есть простая настройка, как показано на рисунке.
Jump Server IP: 173.82.232.55 User: james
Remote Target IP: 173.82.227.89 User: tecmint
Чтобы подключиться к удаленному целевому объекту с помощью сервера перехода, команда будет выглядеть следующим образом.
$ ssh -J
Команда запросит у вас пароль пользователя сервера перехода, за которым последует пароль целевой системы, по которому вам будет предоставлен доступ к целевой системе.
Настройка прокси-серверов в файле ~/.ssh/config
Если вы регулярно используете определенный bastion для подключения к определенному удаленному объекту, вы можете добавить следующую конфигурацию перехода через прокси-сервер в файл ~/.ssh/config, чтобы обеспечить бесперебойное подключение. Когда это произойдет, вы пройдете аутентификацию только один раз, и это произойдет только на удаленном целевом объекте.
Host host-jump
User james
Hostname 173.82.232.55
Host host_destination
User tecmint
Hostname 173.82.227.89
Port 22
Используя приведенную выше конфигурацию, вы можете установить соединение с целевым объектом, как показано на рисунке.
$ ssh -J host_destination
Подключите удаленный Linux с помощью команды SSH ProxyCommand
До SSH Proxy Jump ProxyCommand был единственным способом перехода от хостов к удаленной цели. Он работает путем пересылки stdin (стандартный вход) и stdout (стандартный выход) от удаленной цели через сервер перехода или bastion.
Команда Proxy использует следующий синтаксис.
$ ssh -o ProxyCommand="ssh -W %h:%p <jump server>" <remote target>
Здесь -W в аргументах %h:%p перенаправляет стандартный ввод и вывод на удаленный хост (%h) и порт удаленного хоста (%p). Чтобы привести команду в действие, вот как будет выглядеть наша команда
$ ssh -o ProxyCommand="ssh -W %h:%p 173.82.232.55" 173.82.227.89
Команда настройки прокси-сервера в файле ~/.ssh/config
Конечно, ввод всей команды утомителен и отнимает много времени. Чтобы избежать ввода такой длинной команды, добавьте следующие строки кода в свой файл ~/.ssh/config.
Host host-destination Hostname 173.82.227.89 ProxyCommand ssh -q -W %h:%p host-jump
Сохраните и выйдите. Теперь все, что вам нужно сделать, это выполнить следующую команду для подключения к удаленному серверу.
$ ssh host-destination
Выводы. В этом руководстве мы продемонстрировали, как работают команды Proxy Jump и Proxy Command. В целом, Proxy Jump является лучшей альтернативой ProxyCommand и обеспечивает более простой и бесперебойный способ подключения к удаленному объекту через узел jump.