В этой статье, мы рассмотрим пошагово: как создавать ssh-ключи, отправлять их на удаленный сервер, подключаться по ключам к серверу, а так же отключить вход по ssh с помощью пароля.
Начнемы с создания ssh-ключей на Astra Linux.
1. Создаем ключи с методом шифрования ed25519 (мне он нравится за более надежный метод, а так же за короткий ключ).
Вводим ssh-keygen -t ed25519
При запуске генерации ssh-ключей, у нас запрашивает, будем ли мы указывать путь и название файла с ключем, отличным от стандартного расположения и названия. Если вы планируете использовать один ключ, то можно оставить как есть, ничего не вводить и нажать enter. Если планируете использовать ни один ключ, то конечно лучше создать директории к примеру github, servers итд, а в эти директории создать ключи.

Я же буду использовать стандартное местоположение, но вот название укажу свое astraops.

В моем случае, я прописал /home/andrew/.ssh/astraops
Следущий вопрос, ssh-keygen спрашивает, буду ли я ставить своего рода 'мастер-пароль' на свой ssh-ключ. Это своего рода дополнительная защита к нашему ключу. Даже если кто-то завладеет им, то без этого дополительного пароля, воспользоваться им будет невозможно. Я конечно ставлю мастер-пароль всегда на все свои ключи, по этому вводим пароль, а потом его повторяем. Если не хотите ставить пароль, то просто нажимаем enter и ключи будут без пароля.


После генерации ключей, мы видим сообщение, что ключи сгенерированы.

2. Теперь отправим наш ssh-ключ на удаленный сервер. Для этого есть простая команда ssh-copy-id.
ssh-copy-id -i /ПУТЬ/ДО/КЛЮЧА.pub USERNAME@SERVER
Ключ -i отвечает за путь до ssh ключа.
USERNAME - вводим ваш логин от учетной записи на удаленном сервер
SERVER - адрес, вашего удаленного сервера
![]()
После данной команды, у вас запросит ввод пароля от учетной записи (как буд-то подключаетесь по ssh на сервер). При успешной отправке ключей, мы видим вот такой информационное сообщение.

Попробуем подключиться по ssh-ключам к серверу.

Отлично, мы видим, что по ключам подключение не произошло, сервер запрашивает пароль. Это произошло из-за того, что у меня много ключей и агент не знает, какой ключ нужно использовать для данного сервера. Это легко решается. Нужно всего лишь указать агенту, какие ключики использовать от замка, своего рода сделать бирку на ключи. Если у вас один ключ, то ничего прописывать не нужно, подключение будет проходить и без настроенного config файла.
Если у вас отсутствует config, то создайте его вручную.
touch ~/.ssh/config или командой ниже, если файла нет, он создает автоматически при сохранении.
3. Прописываем сервер в config
nvim ~/.ssh/config
![]()
Прописываем блок такого рода
Host SERVERNAME
HostName SERVERNAME
User USERNAME
IdentityFile /ПУТЬ/ДО/КЛЮЧЕЙ
IdentitiesOnly yes

Теперь если попробовать подключиться, у нас запрашивает мастер-пароль, а не пароль.


Отлично, теперь мы успешно подключаемся к серверу не по паролю, а просто по ключам. Теперь с точки безопасности, будет правильно закрыть доступ входа по логину и паролю, а оставим только по ключам.
4. Как заблокировать доступ к ssh по паролю, а оставить только по ssh ключам. Представлено на видео.