Поиск по сайту:

Как настроить ключи SSH в Ubuntu 12.04


Введение

Протокол Secure Shell (или SSH) — это криптографический сетевой протокол, который позволяет пользователям безопасно получать доступ к удаленному компьютеру через незащищенную сеть.

Хотя SSH поддерживает аутентификацию на основе пароля, обычно вместо этого рекомендуется использовать ключи SSH. Ключи SSH являются более безопасным методом входа на SSH-сервер, поскольку они не уязвимы для распространенных атак взлома паролей методом грубой силы.

Генерация пары ключей SSH создает две длинные строки символов: открытый и закрытый ключ. Вы можете разместить открытый ключ на любом сервере, а затем подключиться к серверу с помощью SSH-клиента, имеющего доступ к закрытому ключу.

Когда открытый и закрытый ключи совпадают, сервер SSH предоставляет доступ без необходимости вводить пароль. Вы можете еще больше повысить безопасность своей пары ключей, защитив закрытый ключ необязательной (но настоятельно рекомендуемой) парольной фразой.

Примечание. Если вы ищете информацию о настройке ключей SSH в своей учетной записи DigitalOcean, обратитесь к нашей документации по продукту DigitalOcean по ключам SSH.

Шаг 1 — Создание пары ключей

Первым шагом является создание пары ключей на клиентской машине. Скорее всего, это будет ваш локальный компьютер. Введите следующую команду в локальную командную строку:

  1. ssh-keygen -t ed25519
Output
Generating public/private ed25519 key pair.

Вы увидите подтверждение того, что процесс генерации ключа начался, и вам будет предложено ввести некоторую информацию, которую мы обсудим на следующем шаге.

Примечание: если вы работаете в более старой системе, которая не поддерживает создание пар ключей ed25519, или сервер, к которому вы подключаетесь, не поддерживает их, вам следует создать надежный rsa пара ключей вместо этого:

  1. ssh-keygen -t rsa -b 4096

Это изменяет флаг -t \type на rsa и добавляет флаг -b 4096 \bits для создания 4096-битного ключ.

Шаг 2 — Указание места для сохранения ключей

Первое приглашение от команды ssh-keygen спросит вас, где сохранить ключи:

Output
Enter file in which to save the key (/home/sammy/.ssh/id_ed25519):

Вы можете нажать здесь ENTER, чтобы сохранить файлы в местоположении по умолчанию в каталоге .ssh вашего домашнего каталога.

Кроме того, вы можете выбрать другое имя файла или местоположение, введя его после приглашения и нажав ENTER.

Шаг 3 — Создание парольной фразы

Второе и последнее приглашение от ssh-keygen попросит вас ввести парольную фразу:

Output
Enter passphrase (empty for no passphrase):

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

Если закрытый ключ без кодовой фразы попадет во владение неавторизованного пользователя, он сможет войти на любой сервер, который вы настроили с помощью связанного открытого ключа.

Основной недостаток парольной фразы — ее ввод — можно смягчить с помощью службы ssh-agent, которая временно сохранит ваш разблокированный ключ и сделает его доступным для клиента SSH. Многие из этих агентов интегрированы с родной связкой ключей вашей операционной системы, что делает процесс разблокировки еще более простым.

Напомним, весь процесс генерации ключа выглядит так:

  1. ssh-keygen -t ed25519
Output
Generating 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. Обязательно замените пример имени пользователя и адреса:

  1. ssh-copy-id sammy@your_server_address

После выполнения команды вы сможете войти на сервер через SSH без запроса пароля. Однако, если вы установили парольную фразу при создании ключа SSH, вам будет предложено ввести парольную фразу в это время. Это ваш локальный клиент ssh, который просит вас расшифровать закрытый ключ, а не удаленный сервер, запрашивающий пароль.

Шаг 5 — Отключение аутентификации SSH на основе пароля (необязательно)

После того, как вы скопировали свои ключи SSH на сервер, вы можете полностью запретить вход в систему с паролем, настроив сервер SSH для отключения аутентификации на основе пароля.

Предупреждение: прежде чем отключить аутентификацию на основе пароля, убедитесь, что вы можете успешно войти на сервер с помощью своего SSH-ключа и что на сервере нет других пользователей, использующих пароли для входа.

Чтобы отключить аутентификацию SSH на основе пароля, откройте файл конфигурации SSH. Обычно он находится в следующем месте:

  1. sudo nano /etc/ssh/sshd_config

Эта команда откроет файл в текстовом редакторе nano. Найдите строку в файле, которая включает PasswordAuthentication (или создайте строку, если она не существует), убедитесь, что она не закомментирована с помощью # в начале строку и измените ее на no:

PasswordAuthentication no

Сохраните и закройте файл, когда закончите. В nano используйте CTRL+O для сохранения, нажмите ENTER, чтобы подтвердить имя файла, затем CTRL+X, чтобы Выход.

Перезагрузите службу sshd, чтобы эти изменения вступили в силу:

  1. sudo systemctl reload sshd

Перед выходом из текущего сеанса SSH выполните тестовое подключение в другом терминале, чтобы убедиться, что вы все еще можете подключиться.

Заключение

В этом руководстве мы создали пару ключей SSH, скопировали наш открытый ключ на сервер и (необязательно) полностью отключили аутентификацию на основе пароля.

Для получения дополнительной информации о SSH и службе SSH, в том числе о том, как настроить многофакторную аутентификацию, ознакомьтесь с нашими соответствующими руководствами:

  • Как использовать SSH для подключения к удаленному серверу
  • Основы SSH: работа с серверами, клиентами и ключами SSH
  • Как настроить многофакторную аутентификацию для SSH в Ubuntu 20.04