Автор оригинала: Zell Liew.
Я хотел использовать действия GitHub для развертывания zellwk.com — Когда я толкаю фиксирую в Github, я хочу, чтобы Действия GitHub построить свой сайт и развернуть на моем цифровом сервере Ocean.
Самая сложная часть этого процесса развертывается на сервер с SSH и RSYNC. Я попробовал различные действия GitHub, как SSH развертывает и Действие SSH , Но я не мог получить разрешения на работу в течение длительного времени.
Я нашел большинство статей о Действия GitHub, и SSH не помог мне много. Я застрял с отладкой за несколько дней, прежде чем я, наконец, решил, как сделать процесс работы.
Сегодня я хочу поделиться точными шагами для развертывания через rsync и ssh. Этот процесс работает для любого сервера, даже если вы не используете цифровой океан.
Шаг 1: генерировать ключ SSH
Вы можете генерировать SSH ключ либо на вашем локальном компьютере, либо на вашем сервере. Это не имеет значения, так как мы можем удалить ключ позже, но рекомендую сделать это на сервере, чтобы вы могли повторно использовать ключ SSH для других действий GitHub.
В этом случае мы будем SSH на сервер.
ssh [email protected]
Как только вы на сервере, перейдите к .ssh
папка. Мы будем генерировать ключ SSH здесь.
cd ~/.ssh
Когда мы генерируем клавишу SSH, мы не можем использовать Инструкции по умолчанию на Github генерируют страницу клавиши SSH . Это связано с тем, что действия GitHub не поддерживают последний алгоритм ED22159. Вместо этого нам нужно использовать устаревшую команду.
Так вот вот команда, которую вам нужно использовать. Не забудьте заменить [Защищена электронная почта]
с вашим адресом электронной почты.
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Примечание. Некоторые авторы GitHub Action сообщили, что нам нужен формат PEM для SSH-ключей для работы. Это ложно. Я протестировал со стандартным форматом RSA (который я рекомендовал выше), и он работает.
Далее нам нужно назвать файл ключа SSH. Здесь я не рекомендую использовать имя файла по умолчанию (что это id_rsa
). Я рекомендую переключить имя файла в Github-действия
Таким образом, мы знаем, что этот ключ используется для действий GitHub. Он платит, чтобы быть явным, когда вы просматриваете свои ключи SSH 6 месяцев вниз по дороге.
Вас также попросят предоставить парольную фраза. Оставьте этот пустой, так как мы не можем вводить пароли, когда Действия GitHub запускают команду ssh для нас.
Когда вы закончите генерацию ваших SSH-ключей, вы должны получить милое изображение, как это:
Если вы используете Ls
Команда сейчас, вы должны увидеть ваши ключи в .ssh
папка.
ls
Открытый ключ содержит .паб
Расширение пока закрытый ключ не.
Нам нужно добавить открытый ключ ( github-ations.pub
) до autorized_keys.
Таким образом, машины, использующие закрытый ключ ( Github-действия
) могут получить доступ к серверу.
Самый простой способ использовать кот
Команда добавить github-ations.pub
в autorized_keys.
. Это похоже на это:
cat github.pub >> authorized_keys
Вот что делает команда:
- Возьмите содержимое
github.pub
скот
Отказ - Примените к
Авторизованные_ки
с>>
Отказ
Примечание. Убедитесь, что вы используете двойные подходящие кронштейны ( >>
), а не одноольные скобки ( >
). Двойные средства добавления, а однократное средство перезаписи. Будь осторожен!
Шаг 3: Добавление закрытого ключа на секреты вашего репозитория
Перейдите в свой репозиторий на GitHub и нажмите «Настройки», затем «Secrets». Вы должны увидеть кнопку, которая говорит «новый секрет репозитория».
Нажмите «Новый секрет репозитория», и вам будет предложено ввести секрет. Этот секрет содержит две вещи — секретное имя и содержание. Секретное имя используется для того, чтобы получить содержимое позже в рабочем процессе действий GitHub.
Когда вы пишете свое секретное имя, пожалуйста, используйте заглавные буквы с подчеркиванием в качестве пробелов (как показано в заполнителе). Это формат, который мы обычно используем для указания секретов.
В этом случае я решил назвать секрет Ssh_private_key
Отказ
Для значения, нам нужно вернуться на свой сервер и открыть Github-действия
закрытый ключ. Мы можем сделать это с нано.
.
nano github-actions
Вы увидите файл, похожий на это. (Не беспокойтесь о том, чтобы я обнарил этот ключ, я уже разбил это. Я просто хотел показать вам именно то, что ожидать).
Нам нужно скопировать все и вставить его в секретную стоимость
Мы можем использовать следующий ключ:
Затем нажмите «Добавить секрет», и вы будете возвращаться на страницу секретов. Здесь вы увидите Ssh_private_key
под секретами репозитория.
Шаг 4: Добавление закрытого ключа на действия GitHub Рабочий процесс
Я предполагаю, что вы уже знаете Как создать базовый файл действий GitHub Поэтому я говорю только о шагах для добавления SSH-ключа здесь.
Добавление закрытого ключа — это сложный бизнес, я решил искать доступные действия GitHub здесь. Единственное действие, которое работало для меня, было Shimataro’s Установите SSH ключ .
steps: - name: Install SSH Key uses: shimataro/[email protected]
Установите ключ SSH-ключа требует двух входов — ключ
а также известные_хосты
ценить.
ключ
Является ли частный ключ, который мы добавили в Github Secrets. Мы можем использовать такие секреты:
steps: - name: Install SSH Key uses: shimataro/[email protected] with: key: $
известные_хосты
Значение является странным хешированным значением. Если вы открываете известные_хосты
Файл в .ssh
Сервер, вы увидите что-то вроде этого:
Мы должны добавить одну из этих значений в секретных действий GitHub. Как мы даже получим эту ценность в первую очередь?! К сожалению, ни один из действий GitHub не показал мне, как это сделать, поэтому мне пришлось в то время как Google -_-.
К счастью, мы можем использовать команду для создания этого странного хешированного значения. Я расскажу об этой команде на следующем шаге. На данный момент мы просто должны добавить случайное значение для известные_хосты
Так что установка SSH SSH Shimataro не даст нам ошибку.
steps: - name: Install SSH Key uses: shimataro/[email protected] with: key: $ known_hosts: 'just-a-placeholder-so-we-dont-get-errors'
Шаг 5: Добавление правильного значения известных_хостков
Мы можем генерировать правильный известные_хосты
Значение с ssh-keyscan
команда. Похоже, это выглядит:
ssh-keyscan -H IP_ADDRESS_OF_HOST
Если вы замените IP_ADDRESS_OF_HOST
С фактическим IP-адресом вашего сервера вы должны получить такое результат. (Я пропустил мой IP-адрес, но пытался показать вам все остальное).
Как только мы узнаем это, мы можем вручную добавить IP-адрес (который я назвал как Ssh_host
Несомненно на секреты Github.
Тогда мы можем генерировать правильную информацию через ssh-keyscan
и добавить его к известные_хосты
файл.
steps: # ... - name: Adding Known Hosts run: ssh-keyscan -H $ >> ~/.ssh/known_hosts
Шаг 6: rsync на сервер
Мы, наконец, можем rsync через ssh на сервер. Для этого вам нужно знать свой SSH пользователя и хост. Вот что выглядит команда.
rsync -flags source [email protected]:destination
Флаги
Являются ли флаги, с которыми вы хотели бы rsync. Мы обычно используемAVZ
который стоитАрхив
,Verbose
икомпресс
. Если вы впервые rsync-ing, я рекомендую использоватьN
Флаг дляСухой запуск
также.Источник
это исходный файл, который вы хотите скопировать из[Защищена электронная почта]
это имя пользователя и IP-адрес вашего сервера. Эти значения должны храниться как секреты.назначение
это местоположение файлов, к которым вы хотите скопировать.
Вот реальный пример того, что я использую для развертывания Zellwk.com на мой сервер.
- name: Deploy with rsync run: rsync -avz ./dist/ [email protected]$:/home/zellwk/zellwk.com/dist/
Так как у нас есть Verbose
Флаг, вы должны увидеть список ресурсов, которые скопированы через rsync.
Вот и все!
Обертывание
Вот шаги для суммирования всего:
- Создайте ключевую крышку SSH с использованием стандартного формата RSA
- Добавить открытый ключ в
autorized_keys.
- Добавьте закрытый ключ в виде секрета GitHub
- Используйте Shimataro’s Установите SSH клавиши Действие для генерации ключа SSH в бегун.
- Добавьте правильный
известные_хосты
Конфигурация сSSH-KEYSCAN
- Развертывание с RYSNC через SSH
Выполнено!
Спасибо за прочтение. Эта статья была первоначально опубликована на мой блог . Подпишись на Моя рассылка Если вы хотите больше статей, чтобы помочь вам стать лучшим разработчиком Frontend.
Оригинал: «https://www.codementor.io/@zellliew/deploying-to-a-server-via-ssh-and-rsync-in-a-github-action-1g3i0soy4n»