Создание и использование защищенного SSH ключа

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

Ключи можно сгенерировать с помощью следующих алгоритмов шифрования:

  • DSA: Это небезопасно и даже больше не поддерживается с версии OpenSSH 7.
  • RSA: Все зависит от размера ключа. Если его длина составляет 3072 или 4096 бит, то все в порядке. Если он меньше, возможно, вам стоит обновить его. Длина 1024 бит даже считается небезопасной.
  • ECDSA: Все зависит от того, насколько хорошо ваш компьютер может генерировать случайное число, которое будет использоваться для создания подписи. Также существует вопрос об доверии к кривым NIST, используемым ECDSA.
  • Ed25519: Это самый рекомендуемый алгоритм открытого ключа, доступный на сегодняшний день!

В текущей статье рассмотрим создание ключа с помощью алгоритма ed25519.

Генерация SSH ключа

Откройте терминал на вашем компьютере.

Введите следующую команду для создания нового SSH ключа:

ssh-keygen -t ed25519

После запуска команды будет предложено ввести путь до файла в который сохранить ключ. По умолчанию ключ будет сохранен в вашей домашней директории ~/.ssh/id_ed25519 (закрытый ключ) и ~/.ssh/id_ed25519.pub (публичный ключ)

Затем будет предложено ввести пароль для вашего ключа. Рекомендуется указать пароль для повышения безопасности.

Использование SSH ключа

Есть несколько способов как скопировать ssh ключ.

Копирование ключа через ssh-copy-id

Вводим команду, заменив <USER@HOST> данные подключения к серверу:

ssh-copy-id -i ~/.ssh/id_ed25519.pub <USER@HOST>

После этого появится поле ввода пароля от учетной записи сервера <USER@HOST>, если пароль введен верно, то ключ успешно скопируется.

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

ssh -i ~/.ssh/id_ed25519 <USER@HOST>

Ручное копирование ключа

Подключитесь к удаленному серверу.

Добавьте ваш публичный ключ на сервер, к которому вы хотите подключиться. Для этого скопируйте содержимое файла id_ed25519.pub и добавьте его в файл ~/.ssh/authorized_keys на сервере.

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

ssh -i ~/.ssh/id_ed25519 <USER@HOST>

Добавление или изменение парольной фразы

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

ssh-keygen -p -f ~/.ssh/id_ed25519

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

Добавление и изменение комментария к ключу

Для добавления комментария к ключу при создании, используйте опцию -C:

ssh-keygen -t ed25519 -C "ваш_комментарий"

Для изменения комментария к ключу (например, если ваш email изменился), вводим команду:

ssh-keygen -c

После запуска команды указываем путь к ключу, комментарий которого требуется изменить, например ~/.ssh/id_ed25519.

После чего, вводим новый комментарий и подтверждаем изменение.

Добавление ключа в SSH-агента

Вы можете найти созданный приватный ключ в файле ~/.ssh/id_ed25519 и публичный ключ в файле ~/.ssh/id_ed25519.pub. Всегда помните, что для аутентификации на удалённых хостах следует прописывать именно публичный ключ.

Перед добавлением вашего нового приватного ключа в агента, убедитесь в том, что он работает, следующей командой:

eval "$(ssh-agent -s)"

Далее выполните эту команду для добавления ключа Ed25519:

ssh-add ~/.ssh/id_ed25519

Если вы хотите добавить ещё ключи из дефолтной директории .ssh, просто запустите:

ssh-add

Примечание для пользователей MacOS

Если вы используете MacOS Sierra 10.12.2 или более свежую, для автозагрузки ключей и сохранения парольных фраз в Keychain вам следует скорректировать файл ~/.ssh/config:

Host *
 AddKeysToAgent yes
 UseKeychain yes
 IdentityFile ~/.ssh/id_ed25519
 IdentityFile ~/.ssh/id_rsa # Сохраните любые старые файлы ключей, если хотите.

После сохранения конфига добавьте приватный ключ в ваш агент:

ssh-add -K ~/.ssh/id_ed25519

Заключение

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