Вопрос или проблема
Я хотел бы разрешить пользователю вход через SSH с использованием публичного ключа, но не разрешать этому пользователю вход с локальной консоли с паролем. Есть ли способ сделать это?
Обходным решением является установка крайне длинного случайного пароля, но мне интересно, можно ли это сделать более аккуратно.
(Debian Linux, если это имеет значение)
Ответ или решение
Для реализации задачи, позволяющей пользователю входить через SSH с использованием открытого ключа, но запрещающей вход с помощью пароля из локальной консоли, можно воспользоваться настройками PAM (Pluggable Authentication Module) в Debian Linux. Вот пошаговая инструкция по выполнению данной настройки.
1. Установка ключа SSH
Первым делом убедитесь, что у пользователя настроен SSH-ключ для входа. Для этого выполните следующие шаги:
-
На клиентском компьютере сгенерируйте пару ключей, если она ещё не создана:
ssh-keygen -t rsa -b 4096
-
Скопируйте открытый ключ на сервер:
ssh-copy-id user@your_server_ip
Заметьте, что user
— это имя вашего пользователя, а your_server_ip
— IP-адрес вашего сервера.
2. Настройка SSH
Теперь необходимо изменить конфигурацию SSH, чтобы ограничить вход по паролю. Откройте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_config
И измените или добавьте следующие строки:
PasswordAuthentication no
ChallengeResponseAuthentication no
Эти параметры отключают аутентификацию по паролю и ответам на вызовы.
После внесения изменений перезапустите службу SSH:
sudo systemctl restart ssh
3. Конфигурация PAM для локального входа
Чтобы настроить PAM для ограничения входа через консоль, откройте файл конфигурации PAM, отвечающий за общую аутентификацию, как /etc/pam.d/common-auth
или схожий файл, в зависимости от версии Debian. Добавьте следующую строку перед другими модулями аутентификации:
auth required pam_listfile.so item=user sense=deny file=/etc/denyusers.on
4. Создание списка запрещённых пользователей
Создайте файл /etc/denyusers.on
и добавьте в него имя пользователя, которому необходимо запретить вход через консоль:
sudo nano /etc/denyusers.on
Внутри файла укажите имя пользователя, например:
restricted_user
5. Проверка конфигурации
После настройки, выполните тестирование. Попробуйте выполнить вход через консоль с паролем — он должен быть отклонён. Вход по SSH с использованием открытого ключа должен оставаться доступным.
Заключение
Таким образом, настроив PAM и SSH, вы можете контролировать доступ пользователей в зависимости от используемого метода аутентификации. Данная настройка обеспечивает безопасность, так как пользователи не смогут использовать пароли для локального входа, но при этом смогут подключаться к серверу по SSH с использованием абсолютно безопасных открытых ключей.
Для более детального изучения, рекомендуется ознакомиться с документацией по SSH и PAM в Debian.