Gitlab CI - SSH üzerinden uzak sunucuya konuşlandırma


12

Derlenmiş dosyalar hakkında tanıklık etmek ve rsync ile bir üretim sunucusuna kopyalamak için yeni bir proje için Gitlab CI kullanan bir Gitlab ortamım var.

Bu kaynakların derlemesinin yürütüldüğü makine, docker'ın (düğüm 6) bir görüntüsüdür, ancak şimdi elde edilen dosyaları linux kullanarak o kapsayıcı Docker komutundan sunucuya kopyalamak zorundayım ... Sorunum ssh yoluyla bağlanmak rsync.

Şu anda aşağıdakiler var:

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

Bu şekilde alıyorum:

    /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
Burada azımsamadığım bir şey var: anında her yapıda yeni bir ssh anahtarı mı üretiyorsunuz? Pub anahtarını dağıtmak için pwd'ye ihtiyacınız olan ssh leys'i kullanmanın amacı nerededir?
lrkwz

@Lrkwz gibi, yine de sizden şifre istenecek her derlemede yeni bir anahtar gönderme noktasını kaçırıyorum. Ayrıca, uzak sunucudaki
authority_keys

Yanıtlar:


3

ssh-copy-id bir şifre istiyor. sshpass -eGitlab'de SSHPASS ortam değişkenini kullanabilir ve ayarlayabilirsiniz.


Siz de bir örnek ekleyebilir misiniz?
Yashu Mittal

1

Ssh anahtarını rsync'e geçirmiyorsunuz. Ssh anahtarını doğru bir şekilde tanımlamak için ssh komutunu yürüten böyle bir şey yapmalısınız:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.