GitHub. Ключ развертывания (deploy key)
Ключ развертывания (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