Заставьте sshd слушать определенный интерфейс

На моей машине я использую OpenVPN, который использует интерфейс tun0. Я хочу, чтобы sshd слушал только на этом интерфейсе.

Я знаю, я могу указать IP-адрес для прослушивания в

/etc/ssh/sshd_config

с

ListenAddress 0.0.0.0

директивы. Но мой IP-адрес изменится, поэтому я не могу выбрать здесь IP-адрес, который всегда действителен. Я знаю, что могу запустить демона, только если VPN работает - это не проблема.

Как я могу заставить sshd слушать только на определенном интерфейсе (tun0)?

1 ответ

Решение

Вы не можете сделать это напрямую, так как sshd понимает только IP-адреса. Вы можете собрать что-нибудь вместе, используя скрипт openvpn up

-up cmd Командная консоль для запуска после успешного открытия устройства TUN/TAP (изменение UID до --user). Сценарий up полезен для указания команд маршрутизации, которые направляют IP-трафик, предназначенный для частных подсетей, которые существуют на другом конце VPN-соединения, в туннель...

Смотрите также --down возможность очистки и соответствующих частей документации с подробным описанием безопасности сценария и т. д.

Вы обнаружите, что IP-адрес устройства tun передается в сценарий как переменная окружения. Также sshd принимает параметры в командной строке вида

-oSomeOption=SomeValue

-o опция Может использоваться для задания опций в формате, используемом в файле конфигурации. Это полезно для указания параметров, для которых нет отдельного флага командной строки. Для получения полной информации о параметрах и их значениях, смотрите sshd_config(5)

Так что вы могли бы использовать

-o ListenAddress=<some address>

Предположительно, у вас есть какой-то внеполосный метод общения с вашим VPS, чтобы, когда это не получится, вы могли связаться с сервером.

Другие вопросы по тегам