Возможно ли, чтобы sshd принимал пароли только на определенных портах?

24

Я знаю, что можно sshdпрослушивать несколько портов, используя несколько Portдиректив. Однако можно ли независимо настроить параметры для каждого порта? В частности, возможно ли, чтобы один порт разрешал аутентификацию по паролю, а другой порт запрещал это?

Лоуренс Гонсалвес
источник
1
Кстати, причина, по которой я это делаю, заключается в том, что я хочу разрешить пароли в своей локальной сети, но не из глобальной сети. Мой брандмауэр WAN позволяет подключаться только к более ограничивающему порту.
Лоуренс Гонсалвес
1
См. Также ограничение по IP-адресам, если вы предпочитаете использовать стандартный номер порта.
Ондрюк,

Ответы:

32

Это может быть достигнуто с помощью Matchдирективы.

В /etc/sshd_configобъявить несколько портов:

Port 22
Port 2222

Затем в самом конце файла добавьте следующее:

Match LocalPort 2222
PasswordAuthentication no

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

Лоуренс Гонсалвес
источник
+1 Очень интересно
Карлос Кампдеррос
Жаль, Matchчто не работает с AllowUsers. Для тех, кому нужно ограничить пользователей для определенного порта, вы, вероятно, застряли с несколькими sshdэкземплярами.
Боб
0

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

Джон
источник
3
Я обнаружил, что на самом деле есть способ сделать это с одним экземпляром sshd. Смотрите ответ, который я разместил. Спасибо, в любом случае.
Лоуренс Гонсалвес