GitHub. Ключ развертывания (deploy key)

26.10.2021

Теги: CLIGitGitHubLinuxSSHWeb-разработкаКлючСервер

Ключ развертывания (deploy key) — это ssh-ключ, предоставляющий доступ к отдельному репозиторию. GitHub прикрепляет открытую часть ключа непосредственно к репозиторию вместо личной учетной записи пользователя, а закрытая часть ключа остается на сервере, где нужно развернуть проект. Сначала создаем ssh-ключ на сервере, который будет deploy key:

$ cd ~/.ssh # переходим в директорию с ключами
$ ssh-keygen # создаем новый ssh-ключ
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): site-one-deploy-key
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in site-one-deploy-key
Your public key has been saved in site-one-deploy-key.pub
The key fingerprint is:
SHA256:telc9h87soRNmwXaEJ1Yzv2ozclaZ0nmQNnAiFq1p0A user@server
The key's randomart image is:
+---[RSA 3072]----+
|          E+=+o  |
|         .o.=+o+ |
|         oo..++..|
|        .. +++...|
|        S o.+oooo|
|         o o+*=+o|
|          o..=Bo+|
|            .+ =o|
|            ..o.o|
+----[SHA256]-----+

Теперь у нас есть приватный ключ site-one-deploy-key и публичный ключ site-one-deploy-key.pub. Публичный ключ копируем в буфер обмена, чтобы вставить на сайте github.com:

$ cat site-one-deploy-key.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDBBMmkATYHroQ/cQMhZXT4OycpL0sw6jPICPSTfghdWi0PVjDxsHv46Y+inikR+ZLFNNBgVElcq0aAREa
TwIKBNpzr8SgVHFcAFK4U+sQlFaFOuJTU5OqfwBpvqjiE/5NUZTWttN+wsxYuUOU3pdBNDHnBp5fVhrjIyEOJdCcGSaWbbd7JoauLG+wJi8BInc/wzpffIY
ivhgtU1tFGesO38fUJx+l0ZTg6Ycc1AOlvzezBepB8lI55iwCDHok0iti6kVanlFs6OqzIux9PuGTmKUWOHALFXuzZYkvSuZJ7cWxkZnBrUte2MH+Bvp56J
7ZvboCbbFB/FA9Pu08GY71x8TRB9+Fr+4h8caOFPQ1+uKRgVca2+mY9RtczMfV+1K7p5OdUe/cpX0cyiQ1yoGUEYqXaNvGpK29R+5HY1Ck4E/dGivniKDVg
cS2J5KMTiXZf34akZ+Y87Rc7U4MpVDlt5Wn4BzDfntLLNKSAulpHL0Rr6pbvtg9A6eYd8t3j30U= user@server

Теперь идем на github.com, в тот репозиторий, из которого будем развертывать проект на сервере. Справа сверху будет ссылка Settings (Настройки), дальше в меню слева выбираем пункт Deploy Keys (Ключи развертывания), дальше ищем ссылку справа Add deploy key (Добавить ключ развертывания). Первое поле — это название ключа для нашего удобства, второе поле — для самого ключа (он у нас в буфере обмена).

Все готово к развертыванию, идем на сервер, переходим в нужную директорию, клонируем проект:

$ cd ~/site-one # клонируем в директорию public_html
$ git clone git@github.com:tokmakov/site-one.git public_html

Если на сервере надо развернуть несколько репозиториев, нужно создать отдельную пару ключей для каждого из них. Создаем ключ для развертывания второго проекта:

$ cd ~/.ssh # переходим в директорию с ключами
$ ssh-keygen # создаем новый ssh-ключ
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): site-two-deploy-key
Enter passphrase (empty for no passphrase): Enter
Enter same passphrase again: Enter
Your identification has been saved in site-two-deploy-key
Your public key has been saved in site-two-deploy-key.pub
The key fingerprint is:
SHA256:telc9h87soRNmwXaEJ1Yzv2ozclaZ0nmQNnAiFq1p0A user@server
The key's randomart image is:
+---[RSA 3072]----+
|          E+=+o  |
|         .o.=+o+ |
|         oo..++..|
|        .. +++...|
|        S o.+oooo|
|         o o+*=+o|
|          o..=Bo+|
|            .+ =o|
|            ..o.o|
+----[SHA256]-----+

Как и раньше, копируем публичный ключ в буфер обмена и на github.com добавляем ключ развертывания для второго репозитория. После чего на сервере создаем файл конфигурации ~/.ssh/config:

$ cd ~/.ssh # переходим в директорию с ключами
$ nano config # создаем файл конфигурации ssh-сервера
Host github.com-site-one
    Hostname github.com
    IdentityFile=/home/user/.ssh/site-one-deploy-key

Host github.com-site-two
    Hostname github.com
    IdentityFile=/home/user/.ssh/site-two-deploy-key

Теперь можно клонировать второй проект:

$ cd ~/site-two # клонируем в директорию public_html
$ git clone git@github.com-site-two:tokmakov/site-two.git public_html

Поиск: CLI • Git • GitHub • Linux • Web-разработка • Сервер • ssh • Ключ • key • deploy

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.