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

Схема следующая:
Для доступа из вне я использую подключение по 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.