Гид по технологиям

Как сгенерировать SSH-ключ на macOS

7 min read Безопасность Обновлено 30 Nov 2025
Генерация SSH-ключа на macOS
Генерация SSH-ключа на macOS

Разблокированный замок на разбросанных клавишах компьютера.

Современная онлайн‑безопасность требует надёжных средств аутентификации. SSH (Secure Shell) — это протокол для защищённой передачи данных и аутентификации по паре ключей: публичному и приватному. На macOS Terminal и утилита ssh-keygen позволяют быстро сгенерировать ключ, сохранить его и подготовить к использованию на серверах или в Git‑хостингах.

Краткое объяснение терминов

  • SSH-ключ: криптографическая пара файлов — публичный (.pub) и приватный. Публичный ключ можно распространять, приватный — хранить только у себя.
  • Passphrase: пароль, которым можно дополнительно защитить приватный ключ.
  • ssh-agent: фоновый менеджер ключей, который хранит расшифрованные ключи в памяти для удобства использования.

Как сгенерировать SSH-ключ с помощью ssh-keygen

  1. Запустите Terminal через Applications > Utilities или через Spotlight.
  2. Выполните команду ssh-keygen с желаемыми параметрами. Простейший пример:
ssh-keygen -t ecdsa -b 521
  • Параметр -t указывает алгоритм (rsa, ecdsa, ed25519).
  • Параметр -b задаёт длину ключа в битах (актуально для RSA и некоторых версий ECDSA).

Если не указывать -b, ssh-keygen применит значение по умолчанию для выбранного алгоритма. После ввода команды следуйте подсказкам: нажмите Enter, чтобы принять предложенный путь сохранения (обычно ~/.ssh/id_<тип>), и введите passphrase дважды, если хотите защитить ключ.

Окно терминала macOS с командой ssh-keygen.

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

Окно терминала macOS с запросом пути для сохранения файла.

Пример полного потока создания ключа

  1. Откройте Terminal.
  2. Запустите одну из команд в зависимости от желаемого алгоритма:
# RSA (совместимость с большинством сервисов)
ssh-keygen -t rsa -b 4096

# ECDSA (короткий ключ, хорошая производительность)
ssh-keygen -t ecdsa -b 521

# Ed25519 (современный выбор, компактный и быстрый)
ssh-keygen -t ed25519
  1. Примите путь по умолчанию или укажите свой.
  2. Введите и подтвердите passphrase (рекомендуется).

Окно терминала macOS с запросом passphrase для ssh-keygen.

Копирование публичного ключа для Git‑хостинга и серверов

После генерации публичный ключ можно быстро скопировать в буфер обмена и вставить в профиль сервиса:

pbcopy < ~/.ssh/id_ecdsa.pub

Если вы использовали другое имя файла при создании, укажите соответствующий путь (например ~/.ssh/id_rsa.pub или ~/.ssh/id_ed25519.pub).

Альтернатива pbcopy: вы можете вывести содержимое в терминале и скопировать вручную:

cat ~/.ssh/id_ed25519.pub

Вставляйте только файл с расширением .pub — это публичный ключ. Приватный ключ остаётся локальным.

Типы SSH‑ключей и рекомендованные размеры

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

  • RSA: широкий уровень совместимости. Рекомендуемые размеры — 2048 (минимум для совместимости) или 4096 бит (лучше с точки зрения долговечности).
  • ECDSA: эффективные ключи меньшей длины. Поддерживаемые размеры обычно 256, 384, 521 бит.
  • Ed25519: современный алгоритм с коротким 256‑бит ключом, хорошая производительность и безопасность; всё чаще предпочтителен для новых установок.

Факт‑бокс:

  • Типичные размеры: RSA 2048/4096 бит, ECDSA 256/384/521 бит, Ed25519 256 бит.
  • Место хранения по умолчанию: ~/.ssh/
  • Файлы: приватный (без расширения), публичный (.pub).

Полезные команды и подсказки

  • ssh-keygen -t <тип> -b <биты> — создать ключ указанного типа и длины.
  • ssh-keygen -p -f <файл> — изменить passphrase для существующего приватного ключа.
  • ssh-keygen -f <файл> -y — вывести публичный ключ из приватного файла (полезно, если вы потеряли .pub).
  • ssh-add <путь к ключу> — добавить приватный ключ в ssh-agent для использования без повторного ввода passphrase.
  • ls -al ~/.ssh — показать список файлов в каталоге SSH.

Пример просмотра ключей:

ls -al ~/.ssh

Пример удаления ключей (осторожно — операция необратима):

rm ~/.ssh/id_ecdsa
rm ~/.ssh/id_ecdsa.pub

Получить подробную справку по ssh-keygen можно командой:

man ssh-keygen

Окно терминала macOS со списком SSH-ключей.

Окно терминала macOS со страницей справки ssh-keygen.

Настройки прав доступа и безопасность ключей

Файлы SSH чувствительны к правам доступа: неправильные права могут привести к отказу в использовании ключа. Стандартные рекомендации:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_ecdsa
chmod 600 ~/.ssh/id_ed25519
  • Каталог ~/.ssh должен быть доступен только вам (700).
  • Приватные ключи — только для чтения/записи владельца (600).

Используйте passphrase, чтобы защитить приватный ключ. Если ключ нужен для автоматизированных задач (CI/CD), используйте отдельный ключ с ограниченным доступом и храните его в защищённом хранилище секретов, а не прямо в репозитории.

Важно: не выкладывайте приватный ключ в открытые репозитории и не присылайте его по электронной почте.

Добавление ключа в ssh-agent и macOS Keychain

ssh-agent позволяет не вводить passphrase каждый раз. Простой поток действий:

  1. Запустите ssh-agent (если не запущен).
  2. Добавьте ключ в агент:
ssh-add ~/.ssh/id_ed25519

На macOS существует интеграция с Keychain (могут использоваться дополнительные флаги или инструменты), что позволяет сохранять passphrase в связке ключей для удобства. Ознакомьтесь с версией OpenSSH в вашей системе и документацией macOS для наиболее корректного способа интеграции.

Как использовать ключ для Git или сервера

  1. Скопируйте содержимое файла .pub.
  2. Вставьте в настройки аккаунта сервиса (например, GitHub — Settings > SSH and GPG keys, GitLab — User Settings > SSH Keys) или поместите в файл ~/.ssh/authorized_keys на удалённом сервере.
  3. Проверьте подключение:
ssh -T git@github.com

Команда вернёт подтверждение аутентификации или диагностическое сообщение.

Когда SSH‑ключи не подходят или дают сбои

  • Если сервер использует только парольную аутентификацию и отключил авторизацию по ключам.
  • Если политика доступа организации требует централизованного управления ключами (например, через LDAP/SSO) — в этом случае используйте рекомендованные административные инструменты.
  • Если приватный ключ скомпрометирован — его нужно немедленно отозвать и заменить.

Альтернативные подходы

  • Использовать временные ключи или сервисы управления ключами/секретами (HashiCorp Vault, облачные KMS) для автоматизированных сред.
  • Применять двухфакторную аутентификацию или сервисы, предоставляющие SSO с SSH‑поддержкой.
  • В случае GUI‑предпочтения — использовать сторонние SSH‑клиенты для macOS с удобным управлением ключами.

Роли и чек‑листы

Для разработчика:

  • Сгенерировать ключ (отдельный ключ для работы и для автоматизации).
  • Присвоить осмысленное имя (ssh-keygen -C “email@company.com”), добавить комментарий.
  • Добавить публичный ключ в профиль Git.
  • Проверить подключение.

Для администратора сервера:

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

Для DevOps/CI:

  • Хранить приватные ключи в защищённом хранилище секретов.
  • Ограничить ключи по IP/времени, если возможно.
  • Использовать отдельные ключи для автоматизированных задач.

Критерии приёмки

  • В каталоге ~/.ssh/ присутствует приватный файл и соответствующий .pub.
  • Файлы имеют правильные права доступа (директория 700, приватные файлы 600).
  • Проверка соединения с удалённым сервисом прошла успешно (ssh -T git@provider).
  • Публичный ключ добавлен в профиль сервиса и протестирован.

Шаблон быстрой проверки (Checklist)

  • Сгенерирован ключ нужного типа.
  • Приватный ключ защищён passphrase или безопасно хранится.
  • Публичный ключ добавлен на сервис/сервер.
  • Права доступа установлены корректно.
  • Тест протокола успешно пройден.

Примеры типичных ошибок и как их исправлять

  • “Permission denied (publickey)”: проверьте, какой приватный ключ используется, права доступа и что публичный ключ добавлен на сервер.
  • “Host key verification failed”: возможно, ключ хоста изменился — проверьте запись в ~/.ssh/known_hosts.
  • Потеря .pub файла: можно восстановить публичный ключ из приватного с помощью ssh-keygen -y -f <приватный_файл>.

Безопасность и конфиденциальность

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

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

Быстрый справочник команд

# Создать Ed25519 ключ
ssh-keygen -t ed25519

# Создать RSA 4096 бит
ssh-keygen -t rsa -b 4096

# Скопировать публичный ключ в буфер (macOS)
pbcopy < ~/.ssh/id_ed25519.pub

# Добавить приватный ключ в ssh-agent
ssh-add ~/.ssh/id_ed25519

# Показать список SSH файлов
ls -al ~/.ssh

# Удалить ключи (осторожно)
rm ~/.ssh/id_ed25519
rm ~/.ssh/id_ed25519.pub

# Просмотреть справку по ssh-keygen
man ssh-keygen

Часто задаваемые вопросы

Можно ли не указывать passphrase?

Можно, но это уменьшает безопасность: при компрометации устройства злоумышленник получит доступ к приватному ключу без дополнительной защиты. Рекомендуется использовать passphrase.

Как проверить, какой публичный ключ на сервере используется?

Проверьте содержимое файла ~/.ssh/authorized_keys на сервере и сверяйте с содержимым вашего .pub файла локально.

Как отозвать или заменить ключ?

Удалите соответствующую строку из ~/.ssh/authorized_keys на сервере и/или удалите ключ в интерфейсе сервиса (GitHub/GitLab). Затем сгенерируйте новый ключ и добавьте его заново.

Краткое резюме

Генерация SSH‑ключа на macOS — простая и контролируемая процедура: ssh-keygen создаёт пару ключей, macOS хранит их в ~/.ssh, а pbcopy помогает скопировать публичный ключ в буфер для вставки в сервисы. Выбирайте алгоритм согласно требованиям сервиса, защищайте приватный ключ passphrase и следите за правами доступа.

Важное: если ключ был скомпрометирован, немедленно отозовите его и замените новым.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Не удалось инициализировать Direct3D — решения
Техподдержка

Не удалось инициализировать Direct3D — решения

Исправить Data Retrieval в Diablo 4 на Steam
Игры

Исправить Data Retrieval в Diablo 4 на Steam

Open Graph в WordPress — настройка мета‑тегов
WordPress SEO

Open Graph в WordPress — настройка мета‑тегов

getconf: адаптивные скрипты для разных Linux
Linux

getconf: адаптивные скрипты для разных Linux

Проверка входов в Windows — успешные и неудачные попытки
Безопасность Windows

Проверка входов в Windows — успешные и неудачные попытки

Исправить ошибку DistributedCOM (DCOM) в Windows
Windows

Исправить ошибку DistributedCOM (DCOM) в Windows