В Linux (Debian Squeeze) я хотел бы отключить вход по SSH с использованием пароля для некоторых пользователей (выбранной группы или всех пользователей, кроме root). Но я не хочу отключать вход по сертификату для них.
редактировать: Большое спасибо за подробный ответ! По какой-то причине на моем сервере это не работает:
Match User !root
PasswordAuthentication no
... но его можно легко заменить на
PasswordAuthentication no
Match User root
PasswordAuthentication yes
Пытаться Match
в sshd_config
:
Match User user1,user2,user3,user4
PasswordAuthentication no
Или по группе:
Match Group users
PasswordAuthentication no
Или, как указано в комментарии, отрицанием:
Match User !root
PasswordAuthentication no
Обратите внимание, что совпадение эффективно "до другой строки Match или до конца файла". (отступ не имеет значения)
Match
в sshd_config
работает хорошо. Вы должны использовать Match all
чтобы завершить блок совпадений, если вы используете openssh 6.5p1 или выше. Пример:
PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all
Есть несколько способов сделать это - во-первых, вы могли бы легко запустить второй демон sshd на другом порту с другой конфигурацией - это немного похоже на взлом, но с некоторой работой chroot он должен работать нормально.
Кроме того, вы можете разрешить аутентификацию по паролю, но заблокировать пароли для всех, кроме одного пользователя. Пользователи с заблокированными паролями по-прежнему смогут аутентифицироваться с помощью открытых ключей.
вы можете просто перейти в файл / etc / ssh / sshd_config и добавить строку To allow -> AllowUsers user1 To Deny ---> DenyUsers user2
мы можем разрешить / запретить вход для определенного набора хостов, используя файлы hosts.allow или hosts.deny, расположенные в папке / etc
По некоторым причинам безопасности вам может потребоваться заблокировать SSH-доступ определенного пользователя к Linux.
Отредактируйте файл sshd_config. Иногда его расположение зависит от дистрибутива Linux, но обычно оно находится в / etc / ssh /.
Откройте файл, войдя в систему как root:
# vi /etc/ssh/sshd_config
Вставьте строку в конец файла конфигурации: -
DenyUsers username1 username2 username3 username4
Сохраните его и перезапустите службы SSH. Обычно вход по SSH по имени пользователя1, имени пользователя2, имени пользователя3 и имени пользователя4 запрещен.
Выполните команду ниже, чтобы перезапустить то же самое: -
# systemctl restart sshd
Требование выполнено. Пожалуйста, возьмите ssh у этих пользователей, и вы получите сообщение об ошибке «Доступ запрещен».