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

Generate Ssh Key Linux 00 Featured Image

Если вы часто используете SSH для подключения к удаленному хосту, одним из способов обеспечить безопасность вашего SSH-сервера является использование открытого/закрытого SSH-ключа, чтобы ни один пароль не передавался по сети. Это также может предотвратить атаки методом грубой силы.

В Linux создание открытого/закрытого SSH-ключа проще простого.

  1. Откройте терминал. Введите:
ssh-keygen -t rsa

Кроме того, вы можете также использовать технологию DSA (Алгоритм цифровой подписи) для создания открытого/закрытого ключа.

ssh-keygen -t dsa

Примечание: было много споров о безопасности DSA и RSA. На мой взгляд, если вы не очень требовательны и не любите углубляться в технические детали между двумя технологиями, не имеет значения, какой из двух вы выберете. Обе будут работать нормально.

  1. На следующем экране вы должны увидеть запрос о месте сохранения ключа. Местоположение по умолчанию - это папка .ssh в вашем домашнем каталоге. Нажмите Enter, чтобы принять настройку по умолчанию.

Generate Ssh Key Linux 01 Create New Key

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

Generate Ssh Key Linux 02 Add New Passphrase

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

Generate Ssh Key Linux 03 List Ssh Folder Files

  1. Загрузите ваш новый открытый SSH-ключ на ваш удаленный хост, выполнив следующую команду:
ssh-copy-id username@remote-host-ip-address

Generate Ssh Key Linux 04 Copy Key To Remote Host

  1. Войдите на ваш удаленный хост и отредактируйте файл конфигурации SSH:
ssh username@remote-host-ip-address  
sudo nano /etc/ssh/sshd_config

Прокрутите вниз файл конфигурации и убедитесь, что следующие атрибуты установлены корректно:

RSAAuthentication yes  
PubkeyAuthentication yes  
PasswordAuthentication no

Нажмите Ctrl + O, чтобы записать и сохранить файл, затем Ctrl + X, чтобы закрыть файл.

Generate Ssh Key Linux 05 Modify Remote Host Ssh Daemon

  1. Перезапустите SSH-сервер на удаленном хосте:
sudo systemctl restart ssh

Вот и всё. Теперь вы можете подключиться к вашему удаленному хосту, используя следующую команду:

ssh username@remote-host-ip-address

Generate Ssh Key Linux 06 Seamless Ssh Login Remote Host

Часто задаваемые вопросы

Я скопировал свой 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. Все изменения и скриншоты сделаны Рамсесом Редом.