Рубрики
Uncategorized

Развертывание на сервер через ssh и rsync в действии github

Самая сложная часть устанавливает SSH ключ и получает его на работу. Я собираюсь показать вам, как вы можете сделать это легко.

Автор оригинала: 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 месяцев вниз по дороге.

Имя SSH. ключевой файл

Вас также попросят предоставить парольную фраза. Оставьте этот пустой, так как мы не можем вводить пароли, когда Действия GitHub запускают команду ssh для нас.

Оставьте парольную фразу пусто

Когда вы закончите генерацию ваших SSH-ключей, вы должны получить милое изображение, как это:

SSH Ключ RandomArt Изображение

Если вы используете Ls Команда сейчас, вы должны увидеть ваши ключи в .ssh папка.

ls

Открытый ключ содержит .паб Расширение пока закрытый ключ не.

Открытый ключ имеет расширение .PUB

Нам нужно добавить открытый ключ ( github-ations.pub ) до autorized_keys. Таким образом, машины, использующие закрытый ключ ( Github-действия ) могут получить доступ к серверу.

Самый простой способ использовать кот Команда добавить github-ations.pub в autorized_keys. . Это похоже на это:

cat github.pub >> authorized_keys

Вот что делает команда:

  • Возьмите содержимое github.pub с кот Отказ
  • Примените к Авторизованные_ки с >> Отказ

Примечание. Убедитесь, что вы используете двойные подходящие кронштейны ( >> ), а не одноольные скобки ( > ). Двойные средства добавления, а однократное средство перезаписи. Будь осторожен!

Шаг 3: Добавление закрытого ключа на секреты вашего репозитория

Перейдите в свой репозиторий на GitHub и нажмите «Настройки», затем «Secrets». Вы должны увидеть кнопку, которая говорит «новый секрет репозитория».

Настройка настроек GitHub
Место навигации GitHub Secrets
Новое местоположение секретной кнопки репозитория

Нажмите «Новый секрет репозитория», и вам будет предложено ввести секрет. Этот секрет содержит две вещи — секретное имя и содержание. Секретное имя используется для того, чтобы получить содержимое позже в рабочем процессе действий GitHub.

добавление нового секрета репозитория

Когда вы пишете свое секретное имя, пожалуйста, используйте заглавные буквы с подчеркиванием в качестве пробелов (как показано в заполнителе). Это формат, который мы обычно используем для указания секретов.

В этом случае я решил назвать секрет Ssh_private_key Отказ

Для значения, нам нужно вернуться на свой сервер и открыть Github-действия закрытый ключ. Мы можем сделать это с нано. .

nano github-actions

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

GitHub Действия Частный ключ

Нам нужно скопировать все и вставить его в секретную стоимость

Вставить закрытый ключ внутри секретной ценности

Мы можем использовать следующий ключ:

Затем нажмите «Добавить секрет», и вы будете возвращаться на страницу секретов. Здесь вы увидите Ssh_private_key под секретами репозитория.

Спасенный секретный SSH-частной ключ

Шаг 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 Сервер, вы увидите что-то вроде этого:

Открытьlety_hosts file.

Мы должны добавить одну из этих значений в секретных действий 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-адрес результат

Как только мы узнаем это, мы можем вручную добавить IP-адрес (который я назвал как Ssh_host Несомненно на секреты Github.

Добавить IP-адрес в Github Secrets

Тогда мы можем генерировать правильную информацию через 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.

Список ресурсов скопированы через rsync

Вот и все!

Обертывание

Вот шаги для суммирования всего:

  1. Создайте ключевую крышку SSH с использованием стандартного формата RSA
  2. Добавить открытый ключ в autorized_keys.
  3. Добавьте закрытый ключ в виде секрета GitHub
  4. Используйте Shimataro’s Установите SSH клавиши Действие для генерации ключа SSH в бегун.
  5. Добавьте правильный известные_хосты Конфигурация с SSH-KEYSCAN
  6. Развертывание с RYSNC через SSH

Выполнено!

Спасибо за прочтение. Эта статья была первоначально опубликована на мой блог . Подпишись на Моя рассылка Если вы хотите больше статей, чтобы помочь вам стать лучшим разработчиком Frontend.

Оригинал: «https://www.codementor.io/@zellliew/deploying-to-a-server-via-ssh-and-rsync-in-a-github-action-1g3i0soy4n»