ab4e83b042
Made-with: Cursor
3.6 KiB
3.6 KiB
GitHub SSH setup and troubleshooting
Подробная инструкция, чтобы один раз настроить SSH и больше не вводить PAT/пароль при git pull/push.
1) Проверка текущего состояния
git remote -v
ssh -V
ls -la ~/.ssh
Если ~/.ssh пустая - это нормально, создадим ключи.
2) Создать ключ ED25519
ssh-keygen -t ed25519 -C "you@example.com"
Рекомендуемые ответы:
- путь:
~/.ssh/id_ed25519 - passphrase: задать (рекомендуется)
3) Запустить ssh-agent и добавить ключ
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Проверка:
ssh-add -l
4) Добавить ключ в GitHub
Показать публичный ключ:
cat ~/.ssh/id_ed25519.pub
Скопируйте его в:
- GitHub -> Settings -> SSH and GPG keys -> New SSH key
5) Добавить github.com в known_hosts
ssh-keyscan github.com >> ~/.ssh/known_hosts
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub ~/.ssh/known_hosts
6) Перевести репозиторий на SSH remote
git remote set-url origin git@github.com:OWNER/REPO.git
git remote -v
7) Тест подключения
ssh -T git@github.com
Ожидаемое сообщение: приветствие от GitHub (без shell-доступа).
Частые ошибки и как исправить
Ошибка: Permission denied (publickey)
Проверьте:
ssh-add -l
Если "The agent has no identities", добавьте ключ снова:
ssh-add ~/.ssh/id_ed25519
Также проверьте, что публичный ключ реально добавлен в GitHub аккаунт.
Ошибка: Host key verification failed
Пересоздайте known_hosts запись:
ssh-keygen -R github.com
ssh-keyscan github.com >> ~/.ssh/known_hosts
Ошибка: "подхватывается не тот ключ"
Создайте ~/.ssh/config:
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519
IdentitiesOnly yes
Права:
chmod 600 ~/.ssh/config
Ошибка при sudo git ...
Не запускайте git pull/push через sudo: root не видит ваш ssh-agent/ключи.
SSH работает, но всё равно просит PAT
Скорее всего remote остался HTTPS.
Проверьте:
git remote -v
Должно быть git@github.com:..., а не https://....
Полезный debug-режим
ssh -Tv git@github.com
Смотрите:
- какой ключ предлагается (
Offering public key) - принял ли его GitHub (
Server accepts key)
Рекомендации для нескольких аккаунтов GitHub
Если личный и рабочий аккаунты:
- Создайте два ключа (
id_ed25519_personal,id_ed25519_work) - Используйте
~/.ssh/configс алиасами:
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes
- Remote для проекта ставьте под нужный алиас:
git remote set-url origin git@github-work:ORG/REPO.git