Есть хост в моей локальной сети для которого посредством правил mangle сделано что доступ в интернет идет через второго провайдера, но если сделано так, я теряю доступ с OpenVPN хоста к нему, но из локальной сети доступ все еще есть, как быть? Знаю, что можно задействовать SSH Jump Host  — это промежуточный сервер, через который выполняется SSH-подключение к другому серверу.

+------------+      +---------------+      +------------------+

| SSH Client | ---> | SSH Jump Host | ---> | SSH Target Server|

+------------+      +---------------+      +------------------+

Схема доступа через SSH Jump Host

Схема следующая:

Для доступа из вне я использую подключение по SSH к OpenVPN серверу который поднят, как VPS (OS: Ubuntu 22.04 LTS Server), а сам сервис держит туннель до домашнего роутера в лице Mikrotik, как это сделано можно обратиться к заметке: "Доступ к ЛВС через OpenVPN на Ubuntu 22.04 за Mikrotik"

Ну а далее мне нужно до VM (VM №3) — это виртуальная машина заметки: "Разворачиваем yt-dlp на Ubuntu 26.04 + python"

и вот эту систему я предопределил, что доступ в интернет осуществляется через WAN2 (ну просто так, пусть используется). Ну и на этот счет есть заметка: "Одновременная работа Netbynet и Inetcom дома"

Это все предисловие, теперь собственно сама реализация — а все просто:

ekzorchik@ekzorchik:~$ ssh -J ekzorchik@172.35.35.4 ekzorchik@172.35.35.20

где 172.35.35.4 — если смотреть на схему это VM №1 (WAN 1)

подключившись на нее, с нее подключаюсь на 172.35.35.20 если смотреть на схему это VM №3 (WAN 2)

ekzorchik@ekzorchik:~$ ssh -J ekzorchik@172.35.35.4 ekzorchik@172.35.35.20

ekzorchik@172.35.35.4's password:

ekzorchik@172.35.35.20's password:

одно неудобство нужно два раза вводить пароль на учетную запись (для удобства примера текущей заметки она одинаковая на обоих системах, только пароли разные).

А ведь можно подключаться на основе публичного ключа, ниже моя реализация:

Шаг №1: На системе OpenVPNсервер генерируем связку публичный приватный ключ:

ekzorchik@ekzorchik:~$ ssh-keygen -t ed25519

Шаг №2: Затем нужно публичный ключ с OpenVPNсервера добавить на хосты:

    srv-nas (172.35.35.4)

    srv-yt (172.35.35.20)

ekzorchik@ekzorchik:~$ ssh-copy-id -i ~/.ssh/id_ed25519.pub ekzorchik@172.35.35.4

но т.к. я не могу с OpenVPN сервера подключиться напрямую к 172.35.35.20, то можно:

подключиться к 172.35.35.4

открыть ~/.ssh/authorized_keys

скопировать строку вида

ssh-ed25519 AAAAC2NzaC1lZDI1N4E5AAAAIOMaZ+3+LOOR1AVegh8JBwpO0xldeZc03JI4x1DK/OEL ekzorchik@<VPS_OPENVPN>

на 172.35.35.20 в ~/.ssh/authorized_keys

Шаг №3: Проверяю подключение посредством ключей:

ekzorchik@ekzorchik:~$ ssh  -J ekzorchik@172.35.35.4 ekzorchik@172.35.35.20 "cat /etc/hostname"

srv-yt

ekzorchik@ekzorchik:~$

Шаг №4: Для удобства ввода можно использовать history, а можно и alias.

Работает, даже лучше, чем изначально предполагалось, а с учетом того что сейчас задумка расписана я по аналогии смогу сделать и вспомнить для последующего.

На этом ну как бы все, буду держать Вас в курсе своих задумок, с уважением автор блога ekzorchik.