Вам нужно видеть экран одного Mac со своей машины, Mac находится за хостом, к которому вы уже можете подключиться по SSH, и вопрос в том, заслуживает ли это VPN. Обычно нет. Одна локальная переадресация несёт один TCP-порт через уже имеющуюся у вас сессию SSH, и для одного экрана на одном хосте это меньшая и легче проверяемая схема, чем маршрутизация всей сети.

Это решают три условия, и любое из них может подтолкнуть вас к управляемому VPN.

Это решают три условия

Первое — охват: одна служба на одном хосте или несколько хостов и несколько портов. Второе — доверяется ли уже каждый переход между бастионом и целью, потому что SSH защищает только тот участок, который он завершает. Третье — кто будет поддерживать эту схему после того, как вы её построите, поскольку туннель, сделанный вручную, обычно переживает человека, который его понимал. Назовите этого человека до начала работы и запишите команду туда, где он сможет её найти. Недокументированная переадресация — это будущий инцидент с отложенной датой начала.

Если ответы «один», «да» и «я, пока что», переадресация — правильный инструмент. Если любой ответ изменится, поддерживаемый проект удалённого доступа за год обходится дешевле, чем разбор инцидента, который следует за недокументированным туннелем.

Пробросьте один порт, а не сеть

Локальная переадресация открывает слушатель на вашей машине и передаёт каждое соединение через SSH-сервер к назначению, до которого этот сервер может добраться. Для Mac, чья служба обмена экраном слушает TCP 5900, и бастиона, который умеет разрешать mac.corp.example, команда короткая и намеренно узкая. Каждый параметр в ней существует, чтобы схема оставалась маленькой: без оболочки, без слушателя на всех интерфейсах, без демона. Читайте её как заявление об охвате, а не как рецепт.

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:15900:mac.corp.example:5900 [email protected]

Привязка слушателя к 127.0.0.1 держит его в стороне от всех остальных интерфейсов. Это не формальность: переадресация, привязанная ко всем интерфейсам, превращает ваш ноутбук в открытый ретранслятор в корпоративную сеть для любого в том же кафе с Wi-Fi. Если порт уже занят, выберите другой высокий порт и обновите просмотрщик; не останавливайте постороннюю службу, чтобы пример подошёл.

Учётной записи на бастионе тоже нужно разрешение на переадресацию к этому назначению. Некоторые усиленные конфигурации SSH полностью отключают переадресацию портов, а некоторые ограничивают её директивой permit-listen или permit-open. Прочитайте политику сервера, прежде чем считать, что отклонённый канал означает неверный пароль.

Что шифрует SSH и где он останавливается

Сессия SSH защищает трафик от вашего Mac до бастиона, а переадресация несёт протокол VNC внутри этой сессии, не понимая его. Как только соединение покидает бастион в сторону цели, оно уже не внутри вашей сессии SSH. Какая бы защита ни была на этом последнем переходе, она принадлежит протоколу цели и собственным средствам контроля частной сети.

Поэтому простой последний переход VNC не следует описывать как сквозное шифрование только потому, что первый переход использовал SSH. Описывайте участки честно: сильный от клиента до бастиона, а дальше то, что поддерживает цель. Если требование в том, чтобы весь путь шифровался одним механизмом, переадресация его не выполняет.

Аутентификация на цели — снова отдельный вопрос. Учётная запись SSH не даёт входа в macOS, и служба обмена экраном по-прежнему запрашивает собственные учётные данные и по-прежнему применяет собственный список доступа. Локальный слушатель, принимающий соединение, ничего не доказывает о том, пустит ли удалённая служба сессию.

Когда полный VPN — правильный выбор

Выбирайте VPN, когда задаче нужно больше одного порта: функции управления и отчётности Apple Remote Desktop используют дополнительный трафик TCP и UDP, который одна переадресация TCP не понесёт. Переадресация — не частичная реализация всего продукта; это другой, меньший инструмент.

Выбирайте её, когда несколько администраторов подключаются из меняющихся мест, потому что управляемый профиль распространяет маршруты, учётные данные и политику без того, чтобы каждый изобретал командную строку. Выбирайте её, когда журнал аудита должен показывать, кто к чему подключался, поскольку сессия SSH на пользователя и общая локальная переадресация оставляют очень разные записи.

Выбирайте её, наконец, когда целевая сеть вообще не должна быть доступна с ноутбука без собственных ворот организации. Личная переадресация обходит эти ворота по замыслу, и именно поэтому она относится к журналу изменений, а не к истории оболочки.

Заставьте переадресацию громко падать

Используйте ExitOnForwardFailure=yes, чтобы неудачная привязка останавливала сессию, а не оставляла оболочку, которая выглядит подключённой и ничего не переадресует. Держите проверку ключа хоста включённой и предпочитайте ключ или агент паролю. Затем проверьте точный URL, который будет использовать просмотрщик, потому что работающая сессия SSH и работающее соединение с экраном — два разных результата.

Для штатного клиента в macOS просмотрщик достигается через локальный URL: open "vnc://127.0.0.1:15900". Если окно открывается, а удалённый хост отклоняет аутентификацию, туннель в порядке, и проблема на цели. Если окно никогда не открывается, проблема в слушателе или порте.

Остановите сессию, когда закончите, и запишите порт, бастион, цель и политику учётной записи. Переадресация, которую никто не задокументировал, через полгода неотличима от чёрного хода, и это самый сильный довод держать её маленькой, названной и временной.

Похожие статьи