Как создать SSH-ключ и добавить его в GitHub: пошаговая инструкция
Настройка SSH-доступа к GitHub за 10 минут: от создания ключа до первого клонирования
Введение
SSH-ключи — это безопасный и удобный способ аутентификации на GitHub без ввода пароля при каждой операции с репозиторием. В отличие от HTTPS, SSH-соединение использует криптографическую пару ключей: приватный ключ хранится на вашем компьютере, а публичный — добавляется в аккаунт GitHub. Это не только ускоряет работу, но и повышает безопасность, так как пароль не передаётся по сети.
В этом руководстве мы разберём полный процесс: от генерации ключевой пары до проверки соединения и клонирования репозитория. Инструкция подходит для Windows, macOS и Linux.
Требования
Установленный Git (версия 2.0 или выше). Проверить можно командой
git --version.Аккаунт на GitHub.
Доступ к терминалу (Command Prompt, PowerShell, Terminal или Git Bash).
Базовое понимание командной строки.
Шаг 1: Проверка существующих SSH-ключей
Прежде чем создавать новый ключ, убедитесь, что у вас ещё нет подходящего. Откройте терминал и выполните:
ls -al ~/.sshЕсли вы видите файлы id_rsa и id_rsa.pub (или id_ed25519 и id_ed25519.pub), возможно, ключ уже есть. Если вы не помните, для чего он используется, лучше создать новый с другим именем, чтобы не нарушить существующие настройки.
Шаг 2: Генерация новой пары SSH-ключей
Современный и безопасный алгоритм — Ed25519. Выполните команду:
ssh-keygen -t ed25519 -C "ваш_email@example.com"-t ed25519задаёт тип ключа (рекомендуется).-Cдобавляет комментарий, обычно это email, привязанный к GitHub.
Если ваша система не поддерживает Ed25519, используйте RSA с длиной 4096 бит:
ssh-keygen -t rsa -b 4096 -C "ваш_email@example.com"После ввода команды вам предложат указать путь для сохранения ключа. По умолчанию это ~/.ssh/id_ed25519 (или id_rsa). Нажмите Enter, чтобы принять предложенный путь, или укажите свой.
Затем система попросит ввести парольную фразу (passphrase). Это дополнительная защита приватного ключа. Можно оставить поле пустым, но для безопасности рекомендуется использовать надёжную фразу. Парольная фраза будет запрашиваться при использовании ключа, если не настроен ssh-agent.
После генерации вы увидите примерно такой вывод:
Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:... ваш_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
| ... |
+----[SHA256]-----+Шаг 3: Добавление ключа в ssh-agent
ssh-agent — это программа, которая кэширует приватные ключи и избавляет от необходимости вводить парольную фразу при каждом подключении.
Для macOS и Linux:
Запустите агент в фоновом режиме:
eval "$(ssh-agent -s)"Вы увидите что-то вроде Agent pid 12345. Затем добавьте ключ:
ssh-add ~/.ssh/id_ed25519Если вы использовали другое имя файла, укажите его.
Для Windows (Git Bash):
В Git Bash выполните те же команды. Если вы используете PowerShell, можно воспользоваться встроенным SSH-агентом Windows:
1. Откройте PowerShell от имени администратора. 2. Выполните Set-Service -Name ssh-agent -StartupType Automatic, затем Start-Service ssh-agent. 3. Добавьте ключ: ssh-add $env:USERPROFILE\.ssh\id_ed25519.
Автоматический запуск ssh-agent (macOS/Linux):
Чтобы не запускать агент вручную каждый раз, добавьте в файл ~/.bashrc или ~/.zshrc следующие строки:
if [ -z "$SSH_AUTH_SOCK" ]; then
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
fiШаг 4: Копирование публичного ключа
Публичный ключ — это файл с расширением .pub. Его содержимое нужно добавить в GitHub.
Способ 1: через терминал
macOS:
pbcopy < ~/.ssh/id_ed25519.pubLinux:
xclip -sel clip < ~/.ssh/id_ed25519.pub(если xclip не установлен, используйтеcatи скопируйте вручную).Windows (Git Bash):
clip < ~/.ssh/id_ed25519.pub
Способ 2: открыть файл вручную
Выполните cat ~/.ssh/id_ed25519.pub и скопируйте весь вывод, начиная с ssh-ed25519 и заканчивая комментарием (email).
Шаг 5: Добавление ключа в аккаунт GitHub
1. Войдите в GitHub и перейдите в настройки профиля (иконка аватара → Settings). 2. В левом меню выберите «SSH and GPG keys». 3. Нажмите «New SSH key». 4. В поле «Title» введите описательное имя, например «Домашний ноутбук». 5. В поле «Key» вставьте скопированный публичный ключ. 6. Нажмите «Add SSH key». При необходимости подтвердите пароль от аккаунта GitHub.
Шаг 6: Проверка SSH-соединения с GitHub
Выполните в терминале:
ssh -T git@github.comВы можете увидеть предупреждение о подлинности хоста. Введите yes, чтобы продолжить. Если всё настроено правильно, вы увидите сообщение:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.Это означает, что аутентификация прошла успешно.
Шаг 7: Настройка Git для использования SSH (если нужно)
Если вы ранее использовали HTTPS, проверьте текущий remote URL в вашем репозитории:
git remote -vЕсли URL начинается с https://, замените его на SSH:
git remote set-url origin git@github.com:username/repo.gitТеперь все операции будут использовать SSH.
Шаг 8: Клонирование репозитория по SSH
Скопируйте SSH-ссылку репозитория на GitHub (кнопка «Code» → SSH). Затем выполните:
git clone git@github.com:username/repo.gitЕсли ключ защищён парольной фразой и ssh-agent не настроен, система запросит её.
Типичные ошибки
Ошибка «Permission denied (publickey)» — обычно означает, что публичный ключ не добавлен в GitHub или ssh-agent не загружен. Проверьте
ssh -T git@github.comи при необходимости добавьте ключ командойssh-add.Ключ добавлен, но соединение не работает — убедитесь, что вы скопировали именно публичный ключ (файл
.pub), а не приватный.Неверные права доступа к файлам ключей — SSH требует, чтобы приватный ключ был доступен только владельцу. Выполните
chmod 600 ~/.ssh/id_ed25519иchmod 644 ~/.ssh/id_ed25519.pub.Использование разных имён файлов — если вы сохранили ключ под другим именем, укажите его в
ssh-addи в конфигурации SSH.Проблемы с ssh-agent в Windows — убедитесь, что служба ssh-agent запущена, или используйте Git Bash.
FAQ
Можно ли использовать один SSH-ключ для нескольких аккаунтов GitHub? Да, но это неудобно. Лучше создать отдельные ключи для каждого аккаунта и настроить файл ~/.ssh/config с разными хостами.
Что делать, если я забыл парольную фразу? Восстановить её невозможно. Придётся сгенерировать новый ключ и добавить его в GitHub, а старый удалить из аккаунта.
Нужно ли хранить приватный ключ в секрете? Да, приватный ключ (файл без .pub) нельзя никому передавать. Публичный ключ можно свободно распространять.
Как удалить старый ключ из GitHub? В настройках «SSH and GPG keys» найдите ненужный ключ и нажмите «Delete».
Работает ли SSH с GitHub Actions? Да, для этого используются секреты и деплой-ключи. Но это отдельная тема.
Итог
Вы создали SSH-ключ, добавили его в GitHub и проверили соединение. Теперь работа с репозиториями стала безопаснее и удобнее — больше не нужно вводить пароль при каждой операции. Не забывайте регулярно обновлять ключи и хранить приватный ключ в надёжном месте.
Читайте также
Комментарии
Комментарии доступны только зарегистрированным пользователям. Войти
- Пока нет комментариев. Будьте первым.



