Для того чтобы настроить SSH так, чтобы пользователи могли авторизовываться только с использованием ключей, вам необходимо сделать следующее:
1. **Создайте пару ключей SSH (если у вас еще нет)**:
- Запустите в своём терминале `ssh-keygen` и следуйте инструкциям (на компьютере пользователя).
- Сохраните публичный ключ, который обычно находится в `~/.ssh/id_rsa.pub` (или аналогичный файл, в зависимости от выбранного типа ключа).
2. **Добавьте публичный ключ на сервер**:
- Скопируйте публичный ключ на сервер с помощью `ssh-copy-id user@host`, где `user` - имя пользователя на сервере, а `host` - имя сервера или IP-адрес.
3. **Настройте SSH-демон на сервере (sshd_config)**:
- Откройте файл конфигурации SSH-демона (обычно `/etc/ssh/sshd_config`) на сервере с помощью текстового редактора, например, с помощью команды `sudo nano /etc/ssh/sshd_config` или `sudo vi /etc/ssh/sshd_config`.
- Найдите и измените или добавьте следующие строки:
```
ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no
PermitRootLogin without-password
PubkeyAuthentication yes
```
Убедитесь, что `PermitRootLogin` установлено в `without-password` (или `prohibit-password` в некоторых версиях SSH), чтобы предотвратить вход под пользователем root без ключа SSH (или полностью отключить вход для root, если это уместно для вашей конфигурации).
4. **Перезапустите SSH**:
- Сохраните изменения и закройте файл конфигурации.
- Перезапустите SSH-демон, чтобы применить изменения, используя команду `sudo systemctl restart sshd` на большинстве современных систем или `sudo service ssh restart` на старых системах.
Если после этих настроек SSH все ещё запрашивает пароль, убедитесь в следующем:
- Публичный ключ зарегистрирован в файле `~/.ssh/authorized_keys` на стороне сервера для соответствующего пользователя.
- Личные ключи доступны и загружены на клиентской машине (по умолчанию это `~/.ssh/id_rsa`, но их можно указать вручную при подключении с помощью флага `-i /путь/к/ключу`).
- Права доступа к файлам SSH на клиенте и сервере корректны: директория `~/.ssh` должна иметь права доступа 700 (drwx------), а файлы внутри неё - 600 (rw-------) для личных ключей и 644 (rw-r--r--) для публичного ключа и `authorized_keys`.
- Кэш SSH-агента не содержит предыдущие ключи которые могут конфликтовать. Посмотреть загруженные ключи можно с помощью `ssh-add -l`, а очистить кэш с помощью `ssh-add -D`.
После корректной настройки вам не будет нужно устанавливать `fail2ban`, чтобы блокировать попытки входа с помощью пароля, так как такие попытки будут полностью отключены настройками SSH. Тем не менее, `fail2ban` может предоставить дополнительный уровень безопасности, блокируя повторяющиеся попытки входа даже без пар