Как настроить ключи SSH в Ubuntu 12.04
Введение
Протокол Secure Shell (или SSH) — это криптографический сетевой протокол, который позволяет пользователям безопасно получать доступ к удаленному компьютеру через незащищенную сеть.
Хотя SSH поддерживает аутентификацию на основе пароля, обычно вместо этого рекомендуется использовать ключи SSH. Ключи SSH являются более безопасным методом входа на SSH-сервер, поскольку они не уязвимы для распространенных атак взлома паролей методом грубой силы.
Генерация пары ключей SSH создает две длинные строки символов: открытый и закрытый ключ. Вы можете разместить открытый ключ на любом сервере, а затем подключиться к серверу с помощью SSH-клиента, имеющего доступ к закрытому ключу.
Когда открытый и закрытый ключи совпадают, сервер SSH предоставляет доступ без необходимости вводить пароль. Вы можете еще больше повысить безопасность своей пары ключей, защитив закрытый ключ необязательной (но настоятельно рекомендуемой) парольной фразой.
Примечание. Если вы ищете информацию о настройке ключей SSH в своей учетной записи DigitalOcean, обратитесь к нашей документации по продукту DigitalOcean по ключам SSH.
Шаг 1 — Создание пары ключей
Первым шагом является создание пары ключей на клиентской машине. Скорее всего, это будет ваш локальный компьютер. Введите следующую команду в локальную командную строку:
- ssh-keygen -t ed25519
OutputGenerating public/private ed25519 key pair.
Вы увидите подтверждение того, что процесс генерации ключа начался, и вам будет предложено ввести некоторую информацию, которую мы обсудим на следующем шаге.
Примечание: если вы работаете в более старой системе, которая не поддерживает создание пар ключей ed25519
, или сервер, к которому вы подключаетесь, не поддерживает их, вам следует создать надежный rsa
пара ключей вместо этого:
- ssh-keygen -t rsa -b 4096
Это изменяет флаг -t
\type на rsa
и добавляет флаг -b 4096
\bits для создания 4096-битного ключ.
Шаг 2 — Указание места для сохранения ключей
Первое приглашение от команды ssh-keygen
спросит вас, где сохранить ключи:
OutputEnter file in which to save the key (/home/sammy/.ssh/id_ed25519):
Вы можете нажать здесь ENTER
, чтобы сохранить файлы в местоположении по умолчанию в каталоге .ssh
вашего домашнего каталога.
Кроме того, вы можете выбрать другое имя файла или местоположение, введя его после приглашения и нажав ENTER
.
Шаг 3 — Создание парольной фразы
Второе и последнее приглашение от ssh-keygen
попросит вас ввести парольную фразу:
OutputEnter passphrase (empty for no passphrase):
Вам решать, хотите ли вы использовать кодовую фразу, но это настоятельно рекомендуется: безопасность пары ключей, независимо от схемы шифрования, по-прежнему зависит от того, что она недоступна никому другому.
Если закрытый ключ без кодовой фразы попадет во владение неавторизованного пользователя, он сможет войти на любой сервер, который вы настроили с помощью связанного открытого ключа.
Основной недостаток парольной фразы — ее ввод — можно смягчить с помощью службы ssh-agent
, которая временно сохранит ваш разблокированный ключ и сделает его доступным для клиента SSH. Многие из этих агентов интегрированы с родной связкой ключей вашей операционной системы, что делает процесс разблокировки еще более простым.
Напомним, весь процесс генерации ключа выглядит так:
- ssh-keygen -t ed25519
OutputGenerating public/private ed25519 key pair.
Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sammy/.ssh/id_ed25519
Your public key has been saved in /home/sammy/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:EGx5HEXz7EqKigIxHHWKpCZItSj1Dy9Dqc5cYae+1zc sammy@hostname
The key's randomart image is:
+--[ED25519 256]--+
| o+o o.o.++ |
|=oo.+.+.o + |
|*+.oB.o. o |
|*. + B . . |
| o. = o S . . |
|.+ o o . o . |
|. + . ... . |
|. . o. . E |
| .. o. . . |
+----[SHA256]-----+
Открытый ключ теперь находится в /home/sammy/.ssh/id_ed25519.pub
. Закрытый ключ теперь находится в /home/sammy/.ssh/id_ed25519
.
Шаг 4 — Копирование открытого ключа на ваш сервер
После того, как пара ключей сгенерирована, пришло время поместить открытый ключ на сервер, к которому вы хотите подключиться.
Вы можете скопировать открытый ключ в файл authorized_keys
сервера с помощью команды ssh-copy-id
. Обязательно замените пример имени пользователя и адреса:
- ssh-copy-id sammy@your_server_address
После выполнения команды вы сможете войти на сервер через SSH без запроса пароля. Однако, если вы установили парольную фразу при создании ключа SSH, вам будет предложено ввести парольную фразу в это время. Это ваш локальный клиент ssh
, который просит вас расшифровать закрытый ключ, а не удаленный сервер, запрашивающий пароль.
Шаг 5 — Отключение аутентификации SSH на основе пароля (необязательно)
После того, как вы скопировали свои ключи SSH на сервер, вы можете полностью запретить вход в систему с паролем, настроив сервер SSH для отключения аутентификации на основе пароля.
Предупреждение: прежде чем отключить аутентификацию на основе пароля, убедитесь, что вы можете успешно войти на сервер с помощью своего SSH-ключа и что на сервере нет других пользователей, использующих пароли для входа.
Чтобы отключить аутентификацию SSH на основе пароля, откройте файл конфигурации SSH. Обычно он находится в следующем месте:
- sudo nano /etc/ssh/sshd_config
Эта команда откроет файл в текстовом редакторе nano
. Найдите строку в файле, которая включает PasswordAuthentication
(или создайте строку, если она не существует), убедитесь, что она не закомментирована с помощью #
в начале строку и измените ее на no
:
PasswordAuthentication no
Сохраните и закройте файл, когда закончите. В nano
используйте CTRL+O
для сохранения, нажмите ENTER
, чтобы подтвердить имя файла, затем CTRL+X
, чтобы Выход.
Перезагрузите службу sshd
, чтобы эти изменения вступили в силу:
- sudo systemctl reload sshd
Перед выходом из текущего сеанса SSH выполните тестовое подключение в другом терминале, чтобы убедиться, что вы все еще можете подключиться.
Заключение
В этом руководстве мы создали пару ключей SSH, скопировали наш открытый ключ на сервер и (необязательно) полностью отключили аутентификацию на основе пароля.
Для получения дополнительной информации о SSH и службе SSH, в том числе о том, как настроить многофакторную аутентификацию, ознакомьтесь с нашими соответствующими руководствами:
- Как использовать SSH для подключения к удаленному серверу
- Основы SSH: работа с серверами, клиентами и ключами SSH
- Как настроить многофакторную аутентификацию для SSH в Ubuntu 20.04