У меня есть маршрутизатор OpenWrt, я хочу отключить аутентификацию по паролю на SSH, чтобы можно было аутентифицироваться только с помощью ключей. Это легко достигается следующим образом:гидОднако в документации я хочу отключить аутентификацию по паролю только на интерфейсе WAN. Возможно ли это?
решение1
Этот ответ относится к OpenSSH. OpenWRT включает Dropbear по умолчанию, поэтому вам нужно будет заменить его, как указаноэта ссылка(по сути, установить openssh-server
и отключить dropbear
).
С OpenSSH то, что вам нужно, возможно осуществить с помощью двух возможных механизмов:
- Отдельные
sshd
конфигурации для интерфейсов LAN и WAN. Это будет работать хорошо только если у вас статический WAN IP (невозможно указатьsshd
прослушивать определенный интерфейс, только определенный IP). - Разрешите аутентификацию по паролю только для клиентов в вашей локальной сети.
Опция 1:
В файле конфигурации локальной сети (например /etc/ssh/sshd_config
, файле по умолчанию) у вас будет что-то вроде:
PasswordAuthentication yes
Listen 192.168.1.1:22
В файле конфигурации WAN (например /etc/ssh/sshd_config_wan
,:
PasswordAuthentication no
Listen 10.1.1.1:22
В приведенном выше примере 192.168.1.1 — это ваш IP-адрес интерфейса LAN, 10.1.1.1 — ваш IP-адрес WAN, а в обоих случаях 22 — порт для прослушивания. Вы можете указать файл конфигурации для загрузки, используя опцию -f
. sshd
Вам нужно будет скопировать сценарий init по умолчанию в новый и изменить его для вызова sshd
с помощью -f /etc/ssh/sshd_config_wan
.
Вариант 2:
В /etc/ssh/sshd_config
, поместите это вконецфайла:
PasswordAuthentication no
Match address 192.168.1.0/24
PasswordAuthentication yes
Здесь вы отключаете аутентификацию по паролю, за исключением адресов в вашей локальной сети (здесь предполагается, что это 192.168.1.0/24).
решение2
Вы можете запустить два экземпляра SSH-сервера с разными конфигурациями, каждый из которых будет прослушивать отдельный интерфейс.