Gitlab CI - Menyebarkan melalui SSH ke server jauh


12

Saya memiliki lingkungan Gitlab menggunakan Gitlab CI, untuk proyek baru untuk bersaksi tentang file yang dikompilasi dan menyalin melalui rsync ke server produksi.

Mesin di mana membangun sumber daya ini adalah exec adalah gambar dari buruh pelabuhan (simpul 6), tapi sekarang saya harus menyalin file yang dihasilkan dari wadah itu perintah Docker ke server menggunakan linux ... Masalah saya adalah untuk terhubung melalui ssh melalui rsync.

Saat ini saya memiliki yang berikut:

stages:
  - deploy

before_script:
    - npm i
    - npm run build

job_deploy:
  stage: deploy
  script:
    - ssh-keygen -t rsa -b 4096 -C '' -f ~/.ssh/deploy_rsa
    - ssh-keyscan -H 8.8.8.8 >> ~/.ssh/known_hosts
    - ssh-copy-id -i ~/.ssh/deploy_rsa.pub $SERVER_USER@8.8.8.8
    - rsync -avuz $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
  only:
    - master

Dengan ini saya mendapatkan:

    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    Permission denied, please try again.
    Permission denied, please try again.
    Permission denied (publickey,password).

3
Ada sesuatu yang saya tidak undersrand di sini: Anda menghasilkan kunci ssh baru dengan cepat setiap build bukan? Di mana gunanya menggunakan ssh leys ketika Anda. Perlu pwd untuk menggunakan kunci pub?
lrkwz

Seperti @lrkwz, saya juga kehilangan titik untuk mengirim kunci baru di setiap build, ketika Anda tetap akan diminta untuk memasukkan kata sandi. Juga, saya ingin melihat file Authorized_key di server jauh ...
Fábio Duque Silva

Jawaban:


3

ssh-copy-id meminta kata sandi. Anda dapat menggunakan sshpass -edan mengatur variabel lingkungan SSHPASS di Gitlab.


Bisakah Anda menambahkan contoh juga?
Yashu Mittal

1

Anda tidak meneruskan kunci ssh ke rsync. Anda harus melakukan sesuatu seperti ini yang mengeksekusi perintah ssh untuk mengidentifikasi dengan benar kunci ssh:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.