Работа с репозиториями через SSH удобнее и безопаснее, чем по HTTPS — вам не нужно вводить пароль при каждом пуше, а авторизация выполняется с помощью криптографических ключей. Разберём процесс полностью: от создания ключа до проверки подключения.
Создание SSH-ключа
На MacOS или Linux откройте терминал.
На Windows можно воспользоваться Git Bash.
Выполните команду:
1 |
ssh-keygen -t ed25519 -a 100 -f ~/.ssh/id_ed25519 |
-t ed25519
— современный алгоритм, короче и надёжнее RSA.-a 100
— увеличивает сложность подбора пароля (если ключ будет украден).-f ~/.ssh/id_ed25519
— имя файла (по умолчаниюid_ed25519
).
Система спросит путь для сохранения и парольную фразу (passphrase). Нажмите Enter, чтобы оставить стандартные настройки.
В результате будут созданы два файла:
~/.ssh/id_ed25519
— приватный ключ (никому не показывать);~/.ssh/id_ed25519.pub
— публичный ключ (его и загружаем на GitHub).
Добавление ключа в GitHub
- Посмотрите содержимое публичного ключа:
cat ~/.ssh/id_ed25519.pub
- Скопируйте всю строку (начинается с
ssh-ed25519
и заканчивается вашим логином/хостом). - Откройте GitHub → Settings → SSH and GPG keys → New SSH key.
- Вставьте ключ и сохраните.
Проверка подключения
Выполните:
1 |
ssh -T git@github.com |
Если всё настроено, вы увидите сообщение:
1 |
Hi username! You've successfully authenticated, but GitHub does not provide shell access. |
Возможные ошибки
Давайте рассмотрим наиболее частые проблемы по результатам проверки подключения.
Host key verification failed.
Это значит, что ваш компьютер не доверяет серверу github.com
, потому что его ключ ещё не добавлен в known_hosts
.
Решение:
1 |
ssh-keyscan github.com >> ~/.ssh/known_hosts |
(для безопасности можно сверить отпечатки ключей на официальной странице GitHub).
После этого повторите проверку.
Ключ не используется при подключении
Если появляется запрос пароля от GitHub, значит приватный ключ не подхватывается.
Проверьте:
1 |
ssh -i ~/.ssh/id_ed25519 -T git@github.com |
Если так работает, добавьте ключ в ssh-agent:
1 2 |
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 |
Теперь Git будет использовать SSH для работы с репозиториями.
Можно клонировать репозитории в формате:
1 |
git clone git@github.com:username/repo.git |
и спокойно работать без постоянного ввода логина и пароля.