Поиск по сайту:

Как использовать SSH ProxyJump и SSH ProxyCommand в Linux


Кратко. В этом руководстве мы покажем, как использовать команды SSH ProxyJump и SSH ProxyCommand при подключении к серверу перехода.

В нашем предыдущем руководстве по настройке сервера перехода SSH мы рассмотрели концепцию бастионного хоста. Хост-бастион или сервер перехода — это промежуточное устройство, к которому клиент SSH подключается первым, прежде чем получить доступ к целевой удаленной системе Linux. Сервер SSH Jump действует как шлюз к вашим ИТ-ресурсам, тем самым уменьшая поверхность атаки.

Команды SSH ProxyJump и ProxyCommand определяют, как клиент подключается к удаленному серверу через сервер перехода, хост перехода. или сервер-бастион.

В этом руководстве основное внимание уделяется SSH ProxyJump и команде SSH Proxy в Linux.

Подключитесь к удаленному Linux с помощью команды SSH ProxyJump

Команда ProxyJump обозначается флагом -J. Он был представлен в версии сервера OpenSSH 7.3 и помогает вам установить соединение с удаленной целью, пропуская бастион или сервер перехода.

Синтаксис ниже показывает, как используется эта опция:

ssh -J <jump-server> <remote-target>

В случае нескольких бастионных или прыжковых серверов синтаксис принимает следующий формат.

ssh -J <jump-server-1> <jump-server-2> <remote-target>

В обоих случаях вы будете входить в систему как пользователь root на каждом этапе пути. Это не идеально по соображениям безопасности, поэтому вам может потребоваться создавать разных пользователей в каждом экземпляре.

Вы можете явно указать разных пользователей и порты SSH, как показано.

ssh -J <user@jump-host:port> <user@remote-target:port>

Чтобы продемонстрировать работу флага ProxyJump, у нас есть простая настройка, как показано ниже.

Jump Server IP:		173.82.232.55		User: james
Remote Target IP:	173.82.227.89		User: tecmint

Для подключения к удаленной цели с помощью сервера Jump команда будет выглядеть следующим образом.

ssh -J [email  [email 

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

Настройка прокси-хостов в файле ~/.ssh/config

Если вы регулярно используете определенный бастион для подключения к определенной удаленной цели, вы можете добавить следующую конфигурацию ProxyJump в файл ~/.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 (стандартный выход) от удаленной цели через сервер перехода или бастион.

ProxyCommand использует следующий синтаксис.

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

Настройка ProxyCommand в файле ~/.ssh/config

Конечно, набирать всю команду утомительно и отнимает много времени. Чтобы не вводить такую длинную команду, добавьте следующие строки кода в файл ~/.ssh/config.

Host host-destination
Hostname 173.82.227.89
ProxyCommand ssh -q -W %h:%p host-jump

Сохранить и выйти.

Теперь все, что вам нужно сделать, это запустить следующую команду для подключения к удаленному серверу.

ssh host-destination
Заключение

В этом руководстве мы продемонстрировали, как работают команды ProxyJump и ProxyCommand. Как правило, ProxyJump является лучшей альтернативой ProxyCommand и обеспечивает более простой и удобный способ подключения к удаленной цели через переходный хост.