Ошибка магического числа в travis

Я получаю следующую ошибку для моего проекта на github после комментирования моего кода на travis-ci.org:

Deploying application

on master ✓
domain: <mydomain> ✓
site path: /srv/http/webapps/Main ✓
zipping _site to site.zip...
decrypting ssh key...
bad magic number

Script failed with status 1
failed to deploy

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

Для этого я использую три компьютера. Мой собственный, компьютер для разработки и компьютер для размещения сайта.

Файлы, которые, как мне кажется, имеют отношение к делу: .travis.yml, .deploy/deploy.sh и .deploy/deploy_key.enc

Я сделал следующее:

sudo ssh root@UBS-main
cd /srv/http/webapps/Main
nano .travis.yml (removing env.global.secure line)
ssh-keygen -t rsa -b 4096 -C 'build@travis-ci.org' -f ./deploy_key
travis encrypt-file deploy_key --add
travis encrypt MY_SECRET_ENV=<pass> --add env.global
rm deploy_key
scp /srv/http/webapps/Main/deploy_key.enc folatt@UBS-Dev:~/workspace/UBS/UBS-site/deploy/deploy_key.enc
scp /srv/http/webapps/Main/.travis.yml folatt@UBS-Dev:~/workspace/UBS/UBS-site/.travis.yml

Это предполагает, что мне

  1. нужно создать ключ ssh
  2. Зашифровать этот ключ с помощью travis.
  3. Нужен какой-то секретный пароль? Опять использую travis.
  4. удалить незашифрованный ключ.
  5. Переместите ключ и файл travis в репозиторий компьютера разработки.
  6. А затем зафиксируйте изменения на github.

.travis.yml

language: ruby
sudo: false
rvm:
- 2.2
env:
  global:
  - domain: <mydomain> (changed)
  - site_path: /srv/http/webapps/Main (changed)
  - secure: <bunch of encrypted code> (changed)
before_script:
  - npm install -g bower
  - bower install
script: bundle exec jekyll build
deploy:
  provider: script
  skip_cleanup: true
  script: "./deploy/deploy.sh"
  on:
    branch: master

./deplay/deploy.sh

#!/usr/bin/env bash
set -e

if [ ! "env:$TRAVIS_BRANCH" == "env:master" ]; then
    echo not on master, not deploying
    exit 0
fi

echo "on master ✓"

if [ -z "$domain" ]; then
    echo "domain" variable not set
    exit 1
fi
echo "domain: $domain ✓"

if [ -z "$site_path" ]; then
    echo "site_path" variable not set
    exit 1
fi
echo "site path: $site_path ✓"

echo "zipping _site to site.zip..."
(cd _site/ && zip -r - .) > site.zip 2>/dev/null

echo "decrypting ssh key..."
openssl aes-256-cbc -k "$deploy_key_pass" -in deploy/deploy_key.enc -out deploy/deploy_key -d
chmod 400 deploy/deploy_key

echo "setting StrictHostKeyChecking for all domains..."
printf "Host *\n    StrictHostKeyChecking no\n" > ~/.ssh/config
chmod 400 ~/.ssh/config

echo "copying site to $domain..."
scp -i deploy/deploy_key site.zip deploy@$domain:~/site.zip
ssh -i deploy/deploy_key deploy@$domain 'rm -rf "'$site_path'"/* && unzip ~/site.zip -d "'$site_path'" && rm ~/site.zip'
0
12.05.2017, 09:38
1 ответ

Решено, поскольку ключ нужно было расшифровать по-другому, и плохое магическое число исчезло.

openssl aes-256-cbc -K $encrypted_<...>_key -iv $encrypted_<...>_iv -in deploy_rsa.enc -out /tmp/deploy_rsa -d

Где $encrypted_<...>_key и $encrypted_<...>_iv генерируются travis encrypt-file deploy_rsa --add.

См. https://oncletom.io/2016/travis-ssh-deploy/

0
28.01.2020, 04:46

Теги

Похожие вопросы