Настройка SSH с Github

Настройка SSH с Github

9 декабря, 2025

Подключение к GitHub по SSH

Работа по SSH позволяет клонировать и пушить в репозитории GitHub без постоянного ввода логина/пароля или токена.

Если вы уже подключались по SSH к другим сервисам (например, Gitea) и у вас есть ключ id_ed25519 или id_rsa, его не нужно затирать.
Можно:

  • либо использовать один и тот же ключ для Gitea и GitHub;
  • либо создать отдельный ключ для GitHub с другим именем и прописать его в ~/.ssh/config.

Общий план

1. Проверить существующие SSH-ключи

Посмотреть, какие ключи уже есть в ~/.ssh (или C:\Users\USER\.ssh).

2. Решить стратегию: один ключ или несколько

Либо используем уже существующий ключ, либо создаём новый с отдельным именем (например, id_ed25519_github).

3. Сгенерировать новый ключ (если нужно)

Создать пару ключей через ssh-keygen (ed25519 или rsa).

4. Обновить ~/.ssh/config

Добавить туда настройки для GitHub (и при необходимости Gitea), чтобы для каждого хоста использовался свой ключ.

5. Добавить публичный ключ в GitHub

Скопировать .pub-файл и вставить на сайте GitHub.

6. Проверить подключение по SSH

Проверить, что всё работает командой ssh -T [email protected].

1. Проверяем существующие SSH-ключи

Linux/macOS

ls -al ~/.ssh

Обратите внимание на файлы вида:

  • id_ed25519 / id_ed25519.pub
  • id_rsa / id_rsa.pub
  • или любые другие пары что-то и что-то.pub

Если, например, вы раньше настраивали Gitea, там уже может быть ключ, вроде:

~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub

Его можно:

  • либо использовать для GitHub тоже;
  • либо оставить как ключ для Gitea, а для GitHub создать новый, например id_ed25519_github.

Windows

Git Bash

ls -al ~/.ssh

PowerShell

Get-ChildItem $env:USERPROFILE\.ssh

Смотрим по аналогии:

  • id_ed25519 / id_ed25519.pub
  • id_rsa / id_rsa.pub
  • другие пары *.pub / без .pub

Если id_ed25519 уже используется для Gitea — не удаляем его.

2. Один ключ или несколько?

Вариант A (проще): один ключ для Gitea и GitHub.
Вариант B (чисто): отдельный ключ для каждого сервиса, плюс настройки в ~/.ssh/config.

Вариант A — один ключ для всех

Если у вас уже есть, например, ~/.ssh/id_ed25519, можно:

  • не генерировать новый ключ,
  • а сразу перейти к разделу «4. Обновляем ~/.ssh/config» и добавить туда блок для github.com, указывающий тот же IdentityFile.

Вариант B — отдельный ключ для GitHub

Если хотите разнести доступы по ключам (Gitea отдельный, GitHub отдельный), создайте дополнительный ключ с другим именем, например:

  • id_ed25519_github (для GitHub)
  • id_ed25519_gitea (для Gitea)

3. Генерируем новый SSH-ключ (опционально)

Никогда не показывайте приватный ключ (id_ed25519, id_ed25519_github без .pub) другим людям и не загружайте его в GitHub.
В GitHub добавляется только файл с суффиксом .pub.

Linux/macOS

Создадим отдельный ключ для GitHub с именем id_ed25519_github:

ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519_github

Если ed25519 недоступен:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_github

Дальше:

  • при запросе passphrase задайте пароль (желательно не пустой);
  • в ~/.ssh появятся файлы:
id_ed25519_github      # приватный ключ
id_ed25519_github.pub  # публичный ключ

Windows

Git Bash (рекомендовано)

ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_ed25519_github

Либо RSA:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_github

PowerShell

ssh-keygen -t ed25519 -C "your_email@example.com" -f $env:USERPROFILE\.ssh\id_ed25519_github

После генерации ключи лежат в:

C:\Users\ВАШ_ПОЛЬЗОВАТЕЛЬ\.ssh\id_ed25519_github
C:\Users\ВАШ_ПОЛЬЗОВАТЕЛЬ\.ssh\id_ed25519_github.pub

4. Настраиваем ~/.ssh/config для GitHub и Gitea

Чтобы явно указать, какой ключ использовать для какого сервиса, создадим/отредактируем файл:

  • Linux/macOS: ~/.ssh/config
  • Windows: C:\Users\ВАШ_ПОЛЬЗОВАТЕЛЬ\.ssh\config

Если файла нет — просто создайте его.

OpenSSH читает настройки из файла config в каталоге .ssh и применяет блок Host в зависимости от того, к какому хосту вы подключаетесь (github.com, gitea.example.com и т.п.).

Пример 1 — один ключ для Gitea и GitHub

Допустим, у вас есть только ~/.ssh/id_ed25519, и он уже используется для Gitea.
Файл ~/.ssh/config может выглядеть так:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

Host gitea
  HostName gitea.example.com
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

Тогда:

  • для GitHub вы используете URL вида:

    git clone [email protected]:USERNAME/REPO.git
  • для Gitea (через alias gitea):

    git clone gitea:GROUP/REPO.git

Пример 2 — разные ключи для Gitea и GitHub

Пусть:

  • Gitea: ~/.ssh/id_ed25519
  • GitHub: ~/.ssh/id_ed25519_github

Тогда ~/.ssh/config:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github
  IdentitiesOnly yes

Host gitea
  HostName gitea.example.com
  User git
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

Убедитесь, что права на ~/.ssh/config ограничены:

chmod 600 ~/.ssh/config

На Windows это обычно не требуется, но файл тоже должен лежать в %USERPROFILE%\.ssh\config.

5. Добавляем ключ в ssh-agent (чтобы не вводить пароль каждый раз)

Linux/macOS

Запускаем ssh-agent:

eval "$(ssh-agent -s)"

Добавляем ключ для GitHub (и при необходимости другие):

ssh-add ~/.ssh/id_ed25519_github
# при необходимости:
# ssh-add ~/.ssh/id_ed25519

Windows

Включаем ssh-agent (один раз, от администратора)

Get-Service -Name ssh-agent | Set-Service -StartupType Manual
Start-Service ssh-agent

Добавляем ключ (обычный пользователь)

  • PowerShell:

    ssh-add $env:USERPROFILE\.ssh\id_ed25519_github
  • Git Bash:

    ssh-add ~/.ssh/id_ed25519_github

6. Копируем публичный ключ и добавляем в GitHub

Linux/macOS

Показать содержимое публичного ключа:

cat ~/.ssh/id_ed25519_github.pub

Скопируйте строку целиком (от ssh-ed25519 до e-mail).

Windows

Git Bash

cat ~/.ssh/id_ed25519_github.pub | clip

Содержимое сразу уходит в буфер — можно вставлять (Ctrl+V) на сайте GitHub.

PowerShell

Get-Content $env:USERPROFILE\.ssh\id_ed25519_github.pub

Скопируйте вывод вручную.

Добавляем ключ на сайте GitHub

  1. Откройте GitHub → Settings.
  2. Слева выберите SSH and GPG keys.
  3. Нажмите New SSH key.
  4. В Title введите что-то вроде: Laptop Linux (GitHub) или Windows PC (GitHub).
  5. В поле Key вставьте содержимое .pub-файла.
  6. Нажмите Add SSH key.

7. Проверяем подключение к GitHub

В любом терминале:

ssh -T [email protected]

При первом подключении появится вопрос:

Are you sure you want to continue connecting (yes/no/[fingerprint])?

Введите:

yes

Если видите сообщение вида:

Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.

— значит, ключ работает, конфиг настроен правильно, и можно использовать SSH-URL для репозиториев GitHub.

Последнее обновление