Введение / Зачем это нужно
SSH-ключи — это современный и безопасный способ аутентификации при работе с GitHub. Вместо того чтобы каждый раз вводить логин и пароль, вы используете криптографическую пару ключей. Это не только удобнее, но и защищает от перехвата пароля. После настройки вы сможете клонировать, пушить и пуллить репозитории без лишних запросов пароля.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть аккаунт на GitHub.
- На вашем Linux-компьютере установлен пакет
openssh-client(обычно предустановлен в большинстве дистрибутивов). Проверить можно командой:
Если команда не найдена, установите через менеджер пакетов (например,ssh -Vsudo apt install openssh-clientдля Ubuntu/Debian). - У вас есть доступ к терминалу и базовые навыки работы с командной строкой.
Пошаговая инструкция
Шаг 1: Проверка существующих SSH ключей
Сначала проверьте, нет ли уже сгенерированных SSH-ключей в стандартном каталоге ~/.ssh. Это поможет избежать создания дубликатов.
ls -la ~/.ssh
В выводе ищите файлы с именами вида id_ed25519 (приватный ключ) и id_ed25519.pub (публичный ключ) или id_rsa/id_rsa.pub (старый формат). Если такие файлы есть и вы хотите использовать их, перейдите к Шагу 3. Если ключей нет или вы хотите создать новый — продолжайте.
Шаг 2: Генерация нового SSH ключа
Для генерации новой пары ключей используйте команду ssh-keygen. Рекомендуется алгоритм Ed25519 (современный и безопасный). Если ваша система не поддерживает Ed25519, используйте rsa с длиной 4096 бит.
ssh-keygen -t ed25519 -C "ваш_email@example.com"
Замените ваш_email@example.com на email, привязанный к вашему аккаунту GitHub. Вам будет предложено:
- Сохранить ключ в файле — нажмите Enter, чтобы использовать путь по умолчанию (
/home/ваш_пользователь/.ssh/id_ed25519). - Ввести paraphrase (парольную фразу) — рекомендуется для дополнительной безопасности. Если не хотите вводить пароль, нажмите Enter дважды (ключ будет без пароля).
После успешного выполнения в каталоге ~/.ssh появятся два файла:
id_ed25519(приватный ключ, никогда не делитесь им)id_ed25519.pub(публичный ключ, его нужно добавить в GitHub)
💡 Совет: Если вы используете старый дистрибутив без поддержки Ed25519, замените
-t ed25519на-t rsa -b 4096.
Шаг 3: Добавление ключа в ssh-agent
Агент ssh-agent управляет вашими ключами и автоматически использует их при подключении. Сначала убедитесь, что агент запущен:
eval "$(ssh-agent -s)"
Вывод должен содержать PID агента (например, Agent pid 12345). Затем добавьте приватный ключ в агент:
ssh-add ~/.ssh/id_ed25519
Если вы задавали парольную фразу при генерации, введите её. Если ключ без пароля, он добавится мгновенно.
⚠️ Важно: На некоторых дистрибутивах (например, Ubuntu) ssh-agent может запускаться автоматически при входе в систему. Если команда
ssh-addвыводитCould not open a connection to your authentication agent, сначала выполнитеeval "$(ssh-agent -s)".
Шаг 4: Копирование публичного ключа в буфер обмена
Теперь нужно скопировать содержимое публичного ключа (файл .pub), чтобы добавить его в настройки GitHub. Способ зависит от наличия графической оболочки:
Если у вас есть графический интерфейс и установлен xclip (обычно в Ubuntu/Debian):
xclip -selection clipboard < ~/.ssh/id_ed25519.pub
Если нет xclip или вы в чистом терминале, просто выведите содержимое ключа и скопируйте вручную:
cat ~/.ssh/id_ed25519.pub
Вывод будет длинной строкой, начинающейся с ssh-ed25519 .... Выделите её целиком (от ssh-ed25519 до конца) и скопируйте (Ctrl+Shift+C или через меню терминала).
Шаг 5: Добавление ключа в аккаунт GitHub
- Откройте GitHub в браузере и войдите в свой аккаунт.
- Нажмите на аватар в правом верхнем углу → Settings.
- В меню слева выберите SSH and GPG keys.
- Нажмите кнопку New SSH key.
- В поле Title задайте понятное имя (например,
My Laptop - Ubuntu 22.04). - В поле Key вставьте скопированный публичный ключ (целиком, без лишних пробелов или переносов).
- Нажмите Add SSH key.
Если запросят пароль от аккаунта, введите его.
Шаг 6: Проверка подключения
Теперь протестируйте, что GitHub распознаёт ваш ключ:
ssh -T git@github.com
Ожидаемый вывод (если всё правильно):
Hi ваш_логин_github! You've successfully authenticated, but GitHub does not provide shell access.
Если вы видите это сообщение — SSH-ключ настроен корректно. Если появляется ошибка Permission denied (publickey), перепроверьте предыдущие шаги (особенно добавление ключа в ssh-agent и в настройки GitHub).
Проверка результата
Вы можете убедиться, что ключ работает, попробовав клонировать любой публичный репозиторий по SSH-ссылке (например, git clone git@github.com:fixpedia/example.git). Если клонирование проходит без запроса пароля — настройка успешна.
Также проверьте, что ключ добавлен в агент:
ssh-add -l
В списке должен отображаться ваш ключ (с email, который вы указали при генерации).
Возможные проблемы
1. Ошибка Permissions 0644 for '~/.ssh/id_ed25519' are too open
Приватный ключ должен быть доступен только на чтение для владельца. Исправьте права:
chmod 600 ~/.ssh/id_ed25519
2. Ошибка The authenticity of host 'github.com (140.82.113.3)' can't be established
При первом подключении к новому хосту SSH спрашивает о доверии. Просто введите yes, чтобы добавить ключ хоста в ~/.ssh/known_hosts.
3. Ключ не работает после перезагрузки
Если вы использовали парольную фразу, после перезагрузки агент не сохраняет ключи. Добавьте ключ заново или настройте автоматический запуск ssh-agent через сессии (например, через ~/.bashrc).
4. Не удаётся скопировать ключ в буфер обмена
Установите xclip (для систем с X11) или wl-copy (для Wayland). Или используйте команду cat и копирование вручную, как описано в Шаге 4.
5. GitHub не принимает ключ
Убедитесь, что вы копируете публичный ключ (файл с расширением .pub), а не приватный. Содержимое должно начинаться с ssh-ed25519 AAAA... или ssh-rsa AAA....