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 Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript. Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.

Команда запросит у вас пароль пользователя сервера перехода, за которым последует пароль целевой системы, по которому вам будет предоставлен доступ к целевой системе.

Connect Linux Using Jump Server

Настройка прокси-серверов в файле ~/.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
SSH to Remote Linux via ProxyJump

Подключите удаленный 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
Connect Linux Using ProxyCommand

Команда настройки прокси-сервера в файле ~/.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.