У меня есть сервер OpenSSH 5.9p1, работающий на Ubuntu Precise 12.04, который принимает соединения как из внутренней сети, так и из Интернета. Я хотел бы потребовать аутентификацию с открытым ключом для подключений из Интернета, но принять аутентификацию с открытым ключом или паролем для подключений из внутренней сети. Могу ли я настроить OpenSSH для этого?
В Match
директива в /etc/ssh/sshd_config
позволяет выборочно применять директивы конфигурации. Одним из доступных критериев соответствия является адрес источника соединения, поэтому его можно использовать для реализации того, что вы хотите. Вы можете отключить аутентификацию по паролю по умолчанию, а затем включить ее для подключений из диапазонов IP-адресов внутренней сети. (Обратите внимание, что вы также хотите отключить ChallengeResponseAuthentication
для предотвращения использования паролей.) В этом примере разрешена аутентификация по паролю из всех диапазонов частных IP-адресов RFC1918. Увидеть sshd_config справочная страница Больше подробностей.
PasswordAuthentication no
ChallengeResponseAuthentication no
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
PasswordAuthentication yes
Обратите внимание, что блок Match следует добавить в конец файла, иначе все, что следует за ним, будет сопоставлено до следующего блока Match. Неправильное расположение блока Match может привести к невозможности подключения.