Как сгенерировать открытый/закрытый SSH-ключ в Linux

Если вы часто используете SSH для подключения к удаленному хосту, одним из способов обеспечить безопасность вашего SSH-сервера является использование открытого/закрытого SSH-ключа, чтобы ни один пароль не передавался по сети. Это также может предотвратить атаки методом грубой силы.
В Linux создание открытого/закрытого SSH-ключа проще простого.
- Откройте терминал. Введите:
ssh-keygen -t rsaКроме того, вы можете также использовать технологию DSA (Алгоритм цифровой подписи) для создания открытого/закрытого ключа.
ssh-keygen -t dsaПримечание: было много споров о безопасности DSA и RSA. На мой взгляд, если вы не очень требовательны и не любите углубляться в технические детали между двумя технологиями, не имеет значения, какой из двух вы выберете. Обе будут работать нормально.
- На следующем экране вы должны увидеть запрос о месте сохранения ключа. Местоположение по умолчанию - это папка .ssh в вашем домашнем каталоге. Нажмите Enter, чтобы принять настройку по умолчанию.

- Вам будет предложено ввести фразу-пароль - НЕ фразу-пароль для подключения к вашему удаленному хосту, а фразу-пароль для разблокировки закрытого ключа, чтобы никто не мог получить доступ к вашему удаленному серверу, даже если они завладеют вашим закрытым ключом. Фраза-пароль является необязательной. Чтобы оставить ее пустой, просто нажмите Enter.

- Ваш открытый и закрытый SSH-ключи должны быть сгенерированы. Откройте файловый менеджер и перейдите в директорию .ssh. Вы должны увидеть два файла: id_rsa и id_rsa.pub.

- Загрузите ваш новый открытый SSH-ключ на ваш удаленный хост, выполнив следующую команду:
ssh-copy-id username@remote-host-ip-address
- Войдите на ваш удаленный хост и отредактируйте файл конфигурации SSH:
ssh username@remote-host-ip-address
sudo nano /etc/ssh/sshd_configПрокрутите вниз файл конфигурации и убедитесь, что следующие атрибуты установлены корректно:
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication noНажмите Ctrl + O, чтобы записать и сохранить файл, затем Ctrl + X, чтобы закрыть файл.

- Перезапустите SSH-сервер на удаленном хосте:
sudo systemctl restart sshВот и всё. Теперь вы можете подключиться к вашему удаленному хосту, используя следующую команду:
ssh username@remote-host-ip-address
Часто задаваемые вопросы
Я скопировал свой SSH-ключ на свой удаленный сервер и получаю ошибку “Permission Denied”.
Эта проблема, скорее всего, связана с вашей папкой “.ssh” на удаленном хосте. По умолчанию демон SSH отклоняет любые входящие подключения, если его конфигурационная папка и файл “authorized_keys” не имеют правильных разрешений.
Чтобы изменить разрешения файлов и папок, получите доступ к локальной консоли для вашего удаленного компьютера, затем перейдите в вашу папку “/home” и выполните: chmod 700 /home/$USER/.ssh && chmod 600 /home/$USER/.ssh/authorized_keys. Наконец, перезапустите демон, чтобы применить новые настройки: sudo systemctl restart ssh.
Можно ли создать несколько SSH-ключей для одного и того же удаленного сервера?
Да! Однако вам нужно убедиться, что каждый SSH-ключ на вашем компьютере имеет уникальное имя файла, выполнив: ssh-keygen -f /home/$USER/.ssh/filename.
Кроме того, убедитесь, что вы указываете ключ, который хотите использовать для входа на ваш удаленный хост, выполнив: ssh -i /home/$USER/.ssh/filename [email protected].
Можно ли импортировать новый SSH-ключ на удаленный хост с использованием старого рабочего ключа?
Да! Сначала импортируйте ваш новый ключ в агент аутентификации SSH: ssh-add. Затем войдите в вашу старую машину и импортируйте ее ключ в тот же агент аутентификации: ssh -A old.machine.ip.address && ssh-add -c.
Наконец, покиньте старую машину, нажав Ctrl + D, и подключитесь к вашему удаленному хосту с обоими вашими новыми и старыми ключами.
Изображение предоставлено: Unsplash. Все изменения и скриншоты сделаны Рамсесом Редом.