Обычно мы используем SSH-клиенты, такие как PuTTY, для удалённого управления Linux-серверами. Однако распространённый метод входа по паролю подвержен проблеме подбора паролей. Поэтому мы обычно устанавливаем SSH-порт отличным от стандартного 22 или отключаем вход в учётную запись root. На самом деле есть лучший способ обеспечить безопасность и позволить вам уверенно входить удалённо как root — это вход по ключу.
Принцип входа по ключу таков: с помощью генератора ключей создаётся пара ключей — открытый и закрытый ключ. Открытый ключ добавляется в учётную запись на сервере, затем на клиенте используется закрытый ключ для прохождения аутентификации и входа. Таким образом, без закрытого ключа никто не сможет подобрать ваш пароль через SSH и удалённо войти в систему. Кроме того, если скопировать открытый ключ в другие учётные записи или даже на другие хосты, вы также сможете войти с помощью закрытого ключа.
Ниже мы объясним, как создать пару ключей на Linux-сервере, добавить открытый ключ в учётную запись, настроить SSH и в конце войти через клиент.
1. Генерация пары ключей
Сначала создайте пару ключей на сервере. Для начала войдите по паролю в учётную запись, которую планируете использовать для входа по ключу, затем выполните следующую команду:
[root@host ~]$ ssh-keygen <== 建立密钥对 Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): <== 输入密钥锁码,或直接按 Enter 留空 Enter same passphrase again: <== 再输入一遍密钥锁码 Your identification has been saved in /root/.ssh/id_rsa. <== 私钥 Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公钥 The key fingerprint is: 0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host
Парольную фразу ключа необходимо вводить при использовании закрытого ключа; это защищает закрытый ключ от кражи. Конечно, её можно оставить пустой, чтобы обеспечить вход без пароля.
Теперь в домашнем каталоге пользователя root создан скрытый каталог с именем .ssh, содержащий два файла ключей. id_rsa — это закрытый ключ, а id_rsa.pub — открытый ключ.
2. Установка открытого ключа на сервер
Введите следующую команду, чтобы установить открытый ключ на сервер:
[root@host ~]$ cd .ssh [root@host .ssh]$ cat id_rsa.pub >> authorized_keys
На этом установка открытого ключа завершена. Чтобы обеспечить успешное подключение, убедитесь, что следующие права доступа к файлам корректны:
[root@host .ssh]$ chmod 600 authorized_keys [root@host .ssh]$ chmod 700 ~/.ssh
3. Настройка SSH для включения входа по ключу
Отредактируйте файл /etc/ssh/sshd_config и выполните следующие настройки:
RSAAuthentication yes PubkeyAuthentication yes
Кроме того, обратите внимание, может ли пользователь root входить по SSH:
PermitRootLogin yes
После того как вы выполните все настройки и успешно войдете с помощью ключа, отключите вход по паролю:
PasswordAuthentication no
Наконец, перезапустите службу SSH:
[root@host .ssh]$ service sshd restart
4. Скачайте закрытый ключ на клиент и преобразуйте его в формат, который может использовать PuTTY
Используйте такие инструменты, как WinSCP или SFTP, чтобы скачать файл закрытого ключа id_rsa на клиентскую машину. Затем откройте PuTTYGen, нажмите кнопку Load в разделе Actions и загрузите только что скачанный файл закрытого ключа. Если вы ранее задали парольную фразу для ключа, на этом этапе ее потребуется ввести.
После успешной загрузки PuTTYGen отобразит информацию, связанную с ключом. Введите описание ключа в поле Key comment, затем нажмите кнопку Save private key, чтобы сохранить файл закрытого ключа в формате, который может использовать PuTTY.
В дальнейшем при входе с помощью PuTTY вы можете выбрать файл закрытого ключа в поле Private key file for authentication: в разделе Connection -> SSH -> Auth слева, а затем войти. В процессе нужно будет ввести только парольную фразу ключа.