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 [email protected]
    - rsync -avuz $CI_PROJECT_DIR/dist/ [email protected]:/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).
Rodrigo Moreno
sumber
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.

pengguna1973167
sumber
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/ [email protected]:/var/wwww/example.com
Yaşar Şentürk
sumber