Linux

Настройка SSH ключа для GitHub на Linux: пошаговая инструкция

Этот гайд поможет вам настроить SSH-аутентификацию для GitHub на Linux. Вы сгенерируете ключ, добавите его в аккаунт и сможете работать с репозиториями без ввода пароля.

Обновлено 16 февраля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+Fedora 35+Linux (любой дистрибутив с OpenSSH)

Введение / Зачем это нужно

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

Требования / Подготовка

Перед началом убедитесь, что:

  1. У вас есть аккаунт на GitHub.
  2. На вашем Linux-компьютере установлен пакет openssh-client (обычно предустановлен в большинстве дистрибутивов). Проверить можно командой:
    ssh -V
    
    Если команда не найдена, установите через менеджер пакетов (например, sudo apt install openssh-client для Ubuntu/Debian).
  3. У вас есть доступ к терминалу и базовые навыки работы с командной строкой.

Пошаговая инструкция

Шаг 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. Вам будет предложено:

  1. Сохранить ключ в файле — нажмите Enter, чтобы использовать путь по умолчанию (/home/ваш_пользователь/.ssh/id_ed25519).
  2. Ввести 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

  1. Откройте GitHub в браузере и войдите в свой аккаунт.
  2. Нажмите на аватар в правом верхнем углу → Settings.
  3. В меню слева выберите SSH and GPG keys.
  4. Нажмите кнопку New SSH key.
  5. В поле Title задайте понятное имя (например, My Laptop - Ubuntu 22.04).
  6. В поле Key вставьте скопированный публичный ключ (целиком, без лишних пробелов или переносов).
  7. Нажмите 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....

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

Что такое SSH ключ и зачем он нужен для GitHub?
Как проверить, что SSH ключ уже добавлен в ssh-agent?
Что делать, если при проверке подключения выводится 'Permission denied (publickey)'?
Можно ли использовать один SSH ключ для нескольких сервисов (GitHub, GitLab и т.д.)?

Полезное

Проверка существующих SSH ключей
Генерация нового SSH ключа
Добавление ключа в ssh-agent
Копирование публичного ключа
Добавление ключа в аккаунт GitHub
Проверка подключения