Gitlab CI - SSH के माध्यम से दूरस्थ सर्वर पर नियोजित करें


12

मेरे पास एक Gitlab वातावरण है, जो Gitlab CI का उपयोग कर रहा है, एक नई परियोजना के लिए संकलित फाइलों के बारे में गवाही देने और उत्पादन सर्वर में rsync के माध्यम से प्रतिलिपि बनाने के लिए।

मशीन जहां इन संसाधनों का निर्माण निष्पादित किया जाता है, वह डॉकटर (6 नोड) की एक छवि है, लेकिन अब मुझे उस कंटेनर डॉकर कमांड से परिणामी फाइलों को लिनक्स का उपयोग करके सर्वर पर कॉपी करना होगा ... मेरी समस्या ssh के माध्यम से कनेक्ट करना है rsync।

वर्तमान में मेरे पास निम्नलिखित हैं:

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

इसके द्वारा मुझे मिल रहा है:

    /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
कुछ है जो मैं यहाँ नहीं समझता हूँ: आप हर बिल्ड isn'it पर मक्खी पर एक नया ssh कुंजी उत्पन्न कर रहे हैं? जहाँ ssh leys का उपयोग करने की बात है, आप पब कुंजी को तैनात करने के लिए क्या सोचते हैं?
lrkwz

@Lrkwz की तरह, मुझे भी हर बिल्ड पर एक नई कुंजी भेजने की बात याद आ रही है, जब आपसे वैसे भी पासवर्ड मांगा जा रहा है। इसके अलावा, मैं रिमोट सर्वर पर अधिकृत_की फ़ाइल देखना पसंद करूंगा ...
फैबियो ड्यूक सिल्वा

जवाबों:


3

ssh-copy-id एक पासवर्ड के लिए पूछ रहा है। आप sshpass -eGitlab में SSHPASS पर्यावरण चर का उपयोग और सेट कर सकते हैं ।


क्या आप एक उदाहरण भी जोड़ सकते हैं?
यशु मित्तल

1

आप ss कुंजी को rsync में नहीं दे रहे हैं। आपको कुछ ऐसा करना चाहिए जो ssh कुंजी को ठीक से पहचानने के लिए ssh कमांड को निष्पादित करता है:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.