Для чего нужен промежуточный хост
Промежуточный хост, также называемый бастионом, — это сервер, к которому вы можете подключиться напрямую и который имеет доступ к вашим внутренним серверам. Наружу открыт только SSH-порт бастиона; внутренние серверы принимают SSH-подключения лишь из внутренней сети. С ProxyJump клиент открывает одно SSH-соединение с бастионом и второе, со сквозным шифрованием, через него к целевому серверу. Бастион пересылает трафик, но не видит содержимого сеанса, а ваш закрытый ключ остаётся на вашем компьютере.
Подключение из командной строки
Параметр -J задаёт промежуточный хост. Несколько переходов разделяйте запятыми: они используются в указанном порядке. Если вы регулярно пользуетесь одним маршрутом, добавьте настройки в ~/.ssh/config, чтобы было достаточно короткого псевдонима.
ssh -J admin@bastion.example admin@app.internal
ssh -J admin@bastion.example,ops@hop2.example admin@app.internal
# ~/.ssh/config
Host app-internal
HostName app.internal
User admin
ProxyJump admin@bastion.exampleПроверяйте каждый ключ хоста
Каждый узел маршрута — отдельный SSH-сервер со своим ключом хоста, поэтому подтвердите отпечатки бастиона и целевого сервера по другому доверенному каналу. Изменение ключа на любом узле требует такого же внимания, как при прямом подключении. Сравните отпечаток, предложенный при первом подключении, со значением, которое администратор считывает на сервере.
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256Предпочитайте ProxyJump перенаправлению агента
Перенаправление агента (ssh -A) позволяет любому, у кого достаточно прав на бастионе, использовать ваши загруженные ключи, пока вы подключены. ProxyJump в этом не нуждается, поскольку аутентификация на целевом сервере выполняется с вашего компьютера. Также не храните закрытые ключи на бастионе и ограничьте круг пользователей, которым разрешён вход на него.
Типичные проблемы подключения
Сначала определите, на каком переходе возникает сбой: подключитесь только к бастиону, затем запустите ssh -vvv с -J, чтобы увидеть, где останавливается соединение. Если бастион работает, а целевой сервер нет, причиной обычно оказывается межсетевой экран между ними, неверное внутреннее имя или отказ целевого сервера принять ваш ключ. Сервер с настройкой AllowTcpForwarding no отказывается работать промежуточным хостом.
Промежуточные хосты в CH-J Server Manager
Alpha 0.1.1 подключается через сохранённый или введённый вручную промежуточный хост; сохранённые хосты могут образовывать цепочку до трёх промежуточных хостов. Ключ хоста проверяется на каждом переходе. Монитор доступности проверяет сервер за промежуточным хостом только через открытый сеанс с этим хостом; иначе сервер отображается как непроверенный, но никогда как доступный. В Beta 0.1.0 этой функции нет.