September 23, 2025

GitHub через SSH

Генерируем SSH-ключ

Перемещаемся в каталог ssh где будут лежать ключи и конфигурация. Стандартный для *nix - подобных /etc/ssh

cd /ect/ssh
ssh-keygen -t rsa -b 4096 -C ""
-t - тип ключа, в нашем случае RSA
-b - длина ключа, в нашем случае 4096
-C - комментарий (можно любую строку)

Далее получаем сообщения:

Enter file in which to save the key - имя файлов с ключами (обязательное поле). в нашем случае введём имя "UserUser"

Enter passphrase - парольая фраза. Если есть желание вводить каждый раз пароль при использование ключа, вводим. Если нет, оставляем пустым.

Enter same passphrase again - вводим тоже самое что и в предыдущем пункте.

Готово, ключи созданы. Один приватный, другой публичный. Там где .pub - публичный.

Настройка конфигурации SSH

В каталоге ssh /etc/ssh правим файл клиента ssh с помощью любого удобного редактора, например nano

sshd_config - серверная часть

ssh_config - клиентская

nano ./ssh_config

Добавляем в конфигурацию следующие строки:

Host UserUser_github
HostName github.com
User git
IdentityFile /etc/ssh/UserUser
HostName - имя хоста, куда пойдем и где будем использовать ключ. В нашем случае это GitHub.com
User - пользователь под которым будем логиниться. В нашем случае на GitHub стучаться будет программа git
IdentityFile - файл до приватного ключа, без .pub
Host - псевдоним.

Один/несколько акаунтов

Если на машине используется только один аккаунт GitHub, то использовать Host не обязательно. Если же акаунтов несколько, то без него не обойтись, так как поиск будет идти по псевдониму.

Например ссылка на репозиторий выглядит вот так:

git@github.com:UserUser/repository.git

Без псевдонима - аккаунт только один

git ориентируется на поле в котором находится github.com (то что после @)

Затем находит в конфигурации совпадение с HostName в файле ssh_config, возьмет ключ IdentityFile для этого HostName и далее выполняет команду.

С псевдонимом - несколько акаунтов

Поле в котором ранее находилась строка github.com, должно замениться на имя псевдонима и принять вид:

git@UserUser_github:UserUser/repository.git

Теперь git возьмет псевдоним pcm_systems_github, найдет его среди множества конфигураций в файле ssh_config, на его место подставит HostName, возьмет ключ IdentityFile для этого HostName и выполнит команду.

Иными словами, псевдоним первичен при поиске необходимой конфигурации.

Настройка на стороне GitHub

В каталоге /etc/ssh выводим содержимое файла публичного ключа. В нашем случае UserUser.pub

Дальше идем на GitHub и следуем по пути:

Домашняястраница GitHub -> Settings -> SSH and GPG keys ->New ssh key

Даём название ключу в поле Title и добавляем содержимое из публичного ключа UserUser.pub в поле Key.

Жмем кнопку Save.

Можно коммитить, пушить, клонить и т.д.