Ниже — короткая пошаговая инструкция + самые частые причины ошибок и как их исправить. Если после этого не заработает, пришлите точный текст ошибок — посмотрю детальнее.
1) Проверка окружения
- Убедитесь, что у вас установлен ssh-keygen:
- Linux/macOS/WSL/Git Bash: which ssh-keygen
- Windows PowerShell: Get-Command ssh-keygen
- Посмотрите домашнюю папку: echo $HOME (или в PowerShell: echo $env:USERPROFILE)
2) Создаём каталог .ssh (если он ещё не создан)
- Linux / macOS / WSL / Git Bash:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
- PowerShell (Windows):
mkdir $env:USERPROFILE\.ssh
# в PowerShell chmod нет, но важно, чтобы владельцем был ваш пользователь
3) Генерация ключа
Рекомендуемый тип — ed25519:
- Linux/macOS/WSL/Git Bash:
ssh-keygen -t ed25519 -C "ваш_email@example.com" -f ~/.ssh/id_ed25519
(если уже есть ключи с таким именем — либо используйте другое имя, либо подтвердите перезапись)
- Если хотите RSA (совместимость с очень старыми системами):
ssh-keygen -t rsa -b 4096 -C "ваш_email@example.com" -f ~/.ssh/id_rsa
- В PowerShell:
ssh-keygen -t ed25519 -C "ваш_email@example.com" -f $env:USERPROFILE\.ssh\id_ed25519
Если ssh-keygen жалуется, что директория не создана / не найдена — значит вы указываете путь, родительской папки которого нет. Решение: создать её командой mkdir -p / полный путь / или использовать путь в домашней папке (~ или $env:USERPROFILE). Пример ошибки и решение:
- Ошибка: No such file or directory when saving key
Решение: mkdir -p /путь/к/директории && повторить ssh-keygen с тем же -f
4) Проверить права на файлы (важно для *nix)
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
5) Добавление ключа в ssh-agent (опционально, чтобы не вводить пароль каждый раз)
- Запустить агент:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
- На Windows (PowerShell): при необходимости включите сервис ssh-agent:
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
6) Копирование публичного ключа в GitHub
- Скопировать публичный ключ:
- macOS: pbcopy < ~/.ssh/id_ed25519.pub
- Linux (xclip установлен): xclip -selection clipboard < ~/.ssh/id_ed25519.pub
- Git Bash: clip < ~/.ssh/id_ed25519.pub
- Или просто cat ~/.ssh/id_ed25519.pub и скопировать вручную
- На GitHub: Settings → SSH and GPG keys → New SSH key → вставить и сохранить.
7) Проверка подключения
ssh -T git@github.com
Вы должны увидеть сообщение типа: "Hi username! You've successfully authenticated..." или приглашение подтвердить fingerprint при первом подключении.
Частые причины ваших ошибок и их решения
- Неверный путь или отсутствие родительской папки: используйте mkdir -p /path/… или путь вида ~/.ssh.
- Права доступа слишком открыты: исправьте chmod (на Windows это реже).
- Использование неправильного интерпретатора/консоли: в PowerShell пути с ~ не разворачиваются, используйте $env:USERPROFILE. В Git Bash используйте ~.
- ssh-keygen отсутствует в системе: установите OpenSSH (на Windows 10+: включить опцию OpenSSH Client в Optional Features).
- Конфликт разрешений/владельца (например, ключи принадлежат другому пользователю): chown youruser:youruser ~/.ssh -R
Если не помогло — пришлите:
- точную команду, которую вы вводите;
- точный текст ошибки, который система выдаёт;
- какая ОС (Linux/macOS/Windows/WSL/Git Bash). Тогда дам конкретное решение.