# Настройка SSH-подключения по ключам

### **Шаг 1.** Генерация приватного и публичного ключа

Для генерации приватного и публичного ключа выполним команду:

```bash
ssh-keygen -a 1000 -b 4096 -o -t rsa
```

Далее необходимо:  
1\. Ввести путь, куда будут сохранены ключи – по-умолчанию это <span style="color: rgb(45, 194, 107);">**~/.ssh/id\_rsa**</span>   
2\. Ввести парольную фразу для расшифровки приватного ключа. Если оставить поле пустым, при его использовании пароль не будет запрашиваться  
Так же важно добавить публичный ключ в один из конфигурационных файлов – <span style="color: rgb(45, 194, 107);">**authorized\_keys**</span>:

```bash
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
```

**Пояснение**  
SSH-ключ будет в файле <span style="color: rgb(45, 194, 107);">**id\_rsa**</span>, в файле <span style="color: rgb(45, 194, 107);">**id\_rsa.pub**</span> будет связанным с ним публичный ключ. Файл <span style="color: rgb(45, 194, 107);">**authorized\_keys**</span> будет хранить в себе список из отпечатков (публичный ключей) для каждого приватного ключа, доступного для этого пользователя.

### **Шаг 2.** Настройка SSHD

Изменим файл /etc/ssh/sshd\_config, задав (изменив) ряд опций. Если закрытый ключ генерировался для любых пользователей, но root не должен иметь права входить на сервер:

```bash
# Запрещаем вход пользователю root
PermitRootLogin no
# Разрешаем использование ключей
PubkeyAuthentication yes
# Запрещаем использование паролей
PasswordAuthentication no
# Запрещаем аутентификацию пользователей через модуль PAM 
# (встроенная аутентификация в Linux)
UsePAM no
```

Если закрытый ключ генерировался для пользователя root, изменяем всего 1 параметр:

```bash
# Разрешаем вход пользователю root
PermitRootLogin yes
```

По желанию, можно разрешить вход каким-то конкретным пользователям:

```bash
AllowUsers root
```

### **Шаг 3.** Перезапуск демона SSH и проверка работоспособности

Для применения изменений выполним перезапуск сервера SSH:

```bash
systemctl restart ssh
```

Далее, попробуем войти на этот же сервер с нашим закрытым ключом:

```bash
ssh username@localhost -i /путь/к/приватному/ключу
```

Если ошибок в конфигурации нет, SSH предложит нам добавить хост в список доверенных (только при первом входе) и разрешит вход. Если на этапе задания пароля для приватного ключа вы установили пароль, он будет запрошен у вас для дешифровки.

##### **Примечание**

Возможно, понадобится отредактировать файлы в **Include-директории**. Обычно, это:

```bash
/etc/ssh/sshd_config.d/*.conf
```

В этих файлах хранятся настройки, которые могут перезаписать значения из основного конфигурационного файла SSHD, поэтому допустимо такое решение:

```bash
rm -f /etc/ssh/sshd_config.d/*.conf
```

<span style="color: rgb(255, 255, 255); background-color: rgb(186, 55, 42);"> **ВАЖНО!** </span>  
Эта команда удалит все содержимое с расширением <span style="color: rgb(45, 194, 107);">**\*.conf**</span> из директории <span style="color: rgb(45, 194, 107);">**/etc/ssh/sshd\_config.d**</span> !!!