Перейти к содержимому

SSH-ключ

Что такое SSH-ключи?

SSH Key

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

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

  1. Открытые (публичные) ключи, также известные как авторизованные ключи, определяют, кто может получить доступ к каждой системе.
  2. Закрытые (приватные) или идентификационные ключи идентифицируют пользователей и предоставляют им доступ.

Как настроить SSH-ключи?

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

Создание SSH-ключа на Mac и Linux

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

  1. Откройте командный терминал и выполните следующую команду:

настройка SSH-ключа

bash
ssh-keygen -t ed25519 -C "[email protected]"
  1. Затем вам нужно выбрать место для сохранения файла.

сохранение SSH-ключа

text
> Enter a file in which to save the key (~/.ssh/id_ed25519): [Press enter]
  1. Затем следует добавить безопасную парольную фразу, которая будет запрашиваться каждый раз при использовании SSH-ключа.

установка пароля для SSH-ключа

text
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
  1. Добавьте новый SSH-ключ в ssh-agent. ssh-agent — это инструмент, отвечающий за хранение закрытых ключей, но он также обрабатывает запросы на подпись с помощью закрытых ключей в целях безопасности.

Выполните следующую команду, чтобы убедиться, что ssh-agent запущен:

SSH-ключ в Linux

bash
eval "$(ssh-agent -s)"
> Agent pid 59566

Если ssh-agent запущен, добавьте новый SSH-ключ в локальный агент SSH, выполнив следующую команду:

SSH-ключ

bash
ssh-add ~/.ssh/id_ed25519

(Примечание: В современных версиях macOS (OpenSSH 8.8+) команда ssh-add -K устарела. Вместо этого добавьте AddKeysToAgent yes в файл ~/.ssh/config, чтобы автоматически сохранять ключи в связке ключей.)

  1. Скопируйте открытый ключ на удаленный сервер. Чтобы использовать ключ для аутентификации, вы должны добавить его в файл ~/.ssh/authorized_keys удаленного сервера. Выполните следующую команду с вашего локального компьютера:
bash
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote_host
  1. Проверьте подключение. Проверьте возможность входа на удаленный сервер с помощью нового ключа:
bash
ssh user@remote_host

Создание SSH-ключа на Windows

Для создания SSH-ключа в операционной системе Windows вам понадобится Git Bash. Откройте Git Bash и выполните следующую команду для генерации ключа:

bash
ssh-keygen -t ed25519 -C "[email protected]"

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

Практика

Какие важные аспекты SSH-ключей существуют в контексте Git?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.