В предыдущем шаге мы сохранили приватный ключ под названием DEPLOY_KEY
в Actions Secrets. В рамках Workflow мы можем обращаться к нему через конструкцию:
${{ secrets.DEPLOY_KEY }}
Для установки ключа на машину, которая запускает наш Workflow, я предпочитаю использовать готовый action: https://github.com/shimataro/ssh-key-action, ссылка на Marketplace. YAML код выглядит так:
- name: Install SSH key
uses: shimataro/ssh-key-action@v2.3.1
with:
key: ${{ secrets.DEPLOY_KEY }}
name: id_rsa
known_hosts: ${{ secrets.KNOWN_HOSTS }}
config: |
Host <your_server.com>
HostName <your_server.com>
User <username>
IdentityFile ~/.ssh/id_rsa
Port 22
Обратите внимание на known_hosts
, здесь я передаю значение переменной, которая хранит информацию о хостах и публичных ключах. Параметр опционален с т.з. SSH, но желателен для предотвращения атак по типу Man-In-The-Middle. Получить значение для known_hosts
можно просканировав нужный хост (наш сервер с Airflow):
ssh-keyscan you_server.com
Секция config
это заполнение файла ~/.ssh/config
, простыми словами конфиг для ssh-клиента с информацией о хосте, приватном ключе, пользователе и удалённом порту на который нужно стучаться для подключения.
Если вы задаётся все необходимые параметры для ssh/config
, то Fabric умеет самостоятельно считывать путь до приватного ключа и нет необходимости передавать его явно.