Как использовать 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 и обеспечивает более простой и удобный способ подключения к удаленной цели через переходный хост.