Как заставить хост SSH-перехода использовать определенный исходящий адрес привязки?

Как заставить хост SSH-перехода использовать определенный исходящий адрес привязки?

Я пытаюсь подключиться по SSH со своего домашнего устройства к конечному хосту через узел перехода, используя опцию ProxyJump OpenSSH.

У хоста Jump к его единственному интерфейсу привязаны два IP-адреса: x.x.x.xи y.y.y.y. Существует брандмауэр с белым списком IP-адресов, которым разрешен доступ по ssh к конечному хосту. y.y.y.yесть в списке, но x.x.x.xего нет.

Проблема в том, что по умолчанию на хосте перехода используется x.x.x.xSSH для исходящего соединения.

Если я вручную подключаюсь по ssh с хоста перехода на конечный хост, я могу переопределить значение по умолчанию с помощью параметра OpenSSH -b, например ssh -b y.y.y.y endhost. Это работает отлично.

Однако при попытке напрямую с моего личного устройства перейти на endhost, используя jumphost в качестве посредника, я не могу заставить это работать. Я пробовал несколько вариантов указания адреса привязки, ~/.ssh/configно безуспешно.

Есть ли способ указать хосту перехода использовать определенный адрес привязки?

решение1

Проблема в моей настройке заключалась в том, что шлюз по умолчаниюjumphostбыл настроен на использование другого IP-адреса ( x.x.x.xв вашем примере), нежели тот, который я хотел sshdиспользовать для исходящего трафика ( y.y.y.yв вашем примере).

Итак, один из методов, который сработал для меня, состоял в том, чтобы задать определенный маршрут наjumphostдляконечный хостIP-адрес.

Наjumphost(у меня Ubuntu 20.04):

route add -host <endhost's IP>/32 gw y.y.y.1 dev <y.y.y.y's Iface>

Где <endhost's IP>IPv4 похож на n.n.n.nи <y.y.y.y's Iface>- это интерфейс, который y.y.y.yсвязан с, например eth0.

Использованная литература:


Обратите внимание, я специально работал над тем, чтобы sshdмаршрутизировать через плавающий IP DigitalOcean. В этом случае y.y.y.yнеобходимо обнаружить с помощью:

curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/address

Итак, если эта команда возвращает 10.10.0.7, то y.y.y.yэто 10.10.0.7.

Использованная литература:

Связанный контент