На своей машине я использую OpenVPN, который использует интерфейс tun0. Я хочу, чтобы sshd слушал только этот интерфейс.
Я знаю, могу указать IP-адрес для прослушивания
/etc/ssh/sshd_config
с
ListenAddress 0.0.0.0
директива. Но мой IP-адрес изменится, поэтому я не могу выбрать здесь всегда действующий IP-адрес. Я знаю, что могу запустить демон только тогда, когда работает VPN - проблема не в этом.
Как сделать так, чтобы sshd слушал только определенный интерфейс (tun0)?
Вы не можете сделать это напрямую, поскольку sshd понимает только IP-адреса. Вы можете собрать что-нибудь вместе, используя скрипт openvpn up
-up cmd Команда оболочки для запуска после успешного открытия устройства TUN / TAP (изменение UID до --user). Сценарий up полезен для указания команд маршрута, которые направляют IP-трафик, предназначенный для частных подсетей, которые существуют на другом конце VPN-соединения, в туннель ...
См. Также --down
возможность очистки и соответствующие части документации, подробно описывающие безопасность сценариев и т. д.
Вы обнаружите, что IP-адрес устройства tun передается в сценарий как переменная среды. Также sshd принимает параметры в командной строке формы
-oSomeOption=SomeValue
-o option Может использоваться для указания параметров в формате, используемом в файле конфигурации. Это полезно для указания параметров, для которых нет отдельного флага командной строки. Для получения полной информации о параметрах и их значениях см. Sshd_config (5).
Итак, вы можете использовать
-o ListenAddress=<some address>
Предположительно у вас есть какой-то внеполосный метод разговора с вашим VPS, чтобы вы могли связаться с сервером, когда он сломается.