Как создать SSH-ключ для доступа к аккаунту на GitHub?

Пытаюсь создать SSH-ключ, но не получается: при использовании директории по умолчанию система сначала сообщает, что директория не создана, затем — что директория не найдена. Я пробовал указать другую директорию и создал в ней папку .ssh, но ошибка остаётся. Как это исправить?
  • 22 мая 2026 г. 10:01
Ответы на вопрос 3
Ниже — короткая пошаговая инструкция + самые частые причины ошибок и как их исправить. Если после этого не заработает, пришлите точный текст ошибок — посмотрю детальнее.

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). Тогда дам конкретное решение.
Попробуйте сделать то же самое не в Git Bash, а в PowerShell?
В данном конкретном случае проблема именно в имени пользователя на русском языке и наличии в пути кириллицы, а так же с кодировкой в терминале. Следует создать нового пользователя с именем из символов только латинского алфавита. Так будет меньше проблем. Так-то при использовании кодировки utf-8 (CP65001) git bash в целом нормально работает с любыми кодировками, но иногда всё же возникают проблемы с некоторыми утилитами.
Похожие вопросы