Git
March 14

Добавление SSH-ключей в Linux

Чтобы запушить изменения в репозиторий на Github, необходимо ввести имя пользователя и пароль. Чтобы не делать этого каждый раз, необходимо настроить SSH-ключ. Сделать это можно следующим образом:

Создайте SSH-ключ

Создайте SSH-ключ, введя следующую команду в терминале (в кавычках укажите свою почту):

ssh-keygen -t ed25519 -C "your_email@gmail.com",

где ssh-keygen — инструмент для генерации SSH-ключей, -t указывает тип ключа, а -C "your_email@example.com" — комментарий, в котором почта используется для идентификации.

Вам предложат самостоятельно выбрать файл, в который сохранять ключ. Нажмите Enter, чтобы оставить настройки по умолчанию.

Команда создаёт два файла:

  • ~/.ssh/id_rsaприватный ключ (его нельзя никому передавать).
  • ~/.ssh/id_rsa.pubпубличный ключ (его нужно добавить на GitHub).

Добавьте SSH-ключ на GitHub

Вывести публичный ключ можно следующей командой:

cat ~/.ssh/id_ed25519.pub

Скопируйте его и добавьте на GitHub в настройках.

Нажмите на изображение профиля, чтобы перейти в настройки и оттуда в SSH и GPG ключи
Нажмите на New SSH key и придумайте название ключа, после чего вставьте скопированный из командной строки ключ

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

Key is invalid. You must supply a key in OpenSSH public key format

то проверте, правильно ли вы скопировали ключ.

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

Далее необходимо проверить подключение.

ssh -T git@github.com

Возможно, вы увидете следующее сообщение:

The authenticity of host 'github.com (140.82.121.4)' can't be established.
ED25519 key fingerprint is SHA256:*********************************.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 

Отвечайте yes.

Warning: Permanently added 'github.com' to the list of known hosts.
Connection reset by 140.82.121.4 port 22
ssh -T git@github.com

Должен появиться следующий текст:

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

Следующая команда выводит список удалённых репозиториев, с которыми связан репозиторий локальный.

git remote -v

Если он начинается с https://, то его необходимо поменять на SSH:

git remote set-url origin git@github.com:username/repository.git,

где вместо username и repository укажите своё имя пользователя на Github и название репозитория соотвественно. Теперь git remote -v должна выводить следующее:

origin git@github.com:username/repository.git (fetch)

origin git@github.com:username/repository.git (push)

Теперь вы можете использовать команду git push, не вводя имя пользователя и пароль.