Заставьте 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, чтобы, когда это не получится, вы могли связаться с сервером.