जेनकिन्स होस्ट कुंजी सत्यापन विफल हो गया


164

मुझे जेनकींस के साथ एक समस्या है , "गिट" सेट करना, निम्न त्रुटि दिखाता है:

Failed to connect to repository : Command "git ls-remote -h https://person@bitbucket.org/person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: fatal: Authentication failed

मैंने ssh के साथ परीक्षण किया है :

git@bitbucket.org:person/projectmarket.git

यह त्रुटि है:

Failed to connect to repository : Command "git ls-remote -h git@bitbucket.org:person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly

मैंने ये कदम "SSH कुंजी" के साथ भी किया है।

जेनकिंस के तहत लॉगिन करें

sudo su jenkins

जेनकिंस .shsh फ़ोल्डर में अपनी github कुंजी कॉपी करें

cp ~/.ssh/id_rsa_github* /var/lib/jenkins/.ssh/

कुंजी का नाम बदलें

mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub

लेकिन फिर भी जेनकींस में गिट रिपॉजिटरी काम नहीं कर रहा है ।

मदद से धन्यवाद!।



जवाबों:


183

jenkinsउपयोगकर्ता के लिए बदलें और मैन्युअल रूप से कमांड चलाएं:

git ls-remote -h git@bitbucket.org:person/projectmarket.git HEAD

SSH के माध्यम से नए होस्ट से कनेक्ट करने पर आपको मानक SSH चेतावनी मिलेगी:

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?

टाइप करें yesऔर एंटर दबाएं। अब होस्ट कुंजी bitbucket.orgको ~/.ssh/known_hostsफ़ाइल में जोड़ा जाएगा और आपको यह त्रुटि जेनकिन्स में नहीं मिलेगी।


6
यह दिखाएं: अनुमति अस्वीकृत (publickey)। घातक: दूरस्थ अंत अप्रत्याशित रूप से लटका हुआ है
एएम मेरिडा

6
सही है, लेकिन यह पूरी तरह से अलग त्रुटि है। अब आपको अपनी सार्वजनिक कुंजी को bitbucket.org पर रिपॉजिटरी में जोड़ना होगा।
ccc

4
चरण 6 यहां देखें: संगम
अतलसैनियन

2
"वर्कफ़ॉर्म" के लिए +1 में ठीक यही समस्या थी। उचित उपयोगकर्ता के लिए id_rsa बनाया गया, जेनकिन्स को chmod-ed, सार्वजनिक कुंजी जोड़ा गया, फिर भी काम नहीं किया। Sudo -u jenkins के रूप में git आज़माकर समस्या को हल करने के लिए knonwn_hosts फ़ाइल प्राप्त की।
सिबिदिबा

3
आपको इसे उस उपयोगकर्ता के रूप में चलाने की आवश्यकता है जो जेनकिंस चला रहा है। अधिकांश प्रणालियों पर, एक आम तौर पर इसे एक अलग उपयोगकर्ता (उदाहरण के लिए 'जेनकींस' उपयोगकर्ता) के रूप में चलाता है। इसलिए, आपको यह सुनिश्चित करने के लिए उस उपयोगकर्ता पर स्विच करने की आवश्यकता होगी कि bitbucket.org के लिए पता ~ / .ssh / ज्ञात_होस्ट में जोड़ा गया है।
ctc

43

जेनकिंस एक सेवा खाता है, इसमें डिज़ाइन द्वारा शेल नहीं है। यह आम तौर पर स्वीकार किया जाता है कि सेवा खाते। अंतःक्रियात्मक रूप से लॉग इन करने में सक्षम नहीं होना चाहिए।

"जेनकिंस होस्ट कुंजी सत्यापन विफल" का समाधान करने के लिए, निम्न चरण करें। मैंने जेनकिन्स के साथ मरकरी का इस्तेमाल किया है।

1) टर्मिनल पर आदेशों का पालन करें

             $ sudo su -s /bin/bash jenkins

पासवर्ड प्रदान करें

2) निम्नलिखित आदेश का उपयोग करके सार्वजनिक निजी कुंजी उत्पन्न करें:

              ssh-keygen

आप आउटपुट को ::

Generating public/private rsa key pair. 
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

3) Enter दबाएं -> कोई पासफ़्रेज़ न दें -> एंटर दबाएँ

             Key has been generated

4) -> cat /var/lib/jenkins/.ssh/id_rsa.pub पर जाएं

5) id_rsa.pub से कॉपी की

6) बैश से बाहर निकलें

7) ssh@yourrepository

8) vi .ssh/authorized_keys

9) कुंजी चिपकाएँ

10) बाहर निकलें

11) मैन्युअली मर्क्यूरियल सर्वर पर लॉगिन करें

नोट: Pls मैन्युअल रूप से लॉगिन करें अन्यथा जेनकींस फिर से त्रुटि देगा "मेजबान सत्यापन विफल"

12) एक बार मैन्युअल रूप से करने के बाद, अब जेनकिंस पर जाएं और बिल्ड दें

का आनंद लें!!!

शुभ लाभ


यहां पासवर्ड का अनुरोध क्या है?
आइसफ़ायर

26

या आप उपयोग कर सकते हैं:

ssh -oStrictHostKeyChecking=no host

यह असुरक्षित होगा (मध्यम हमलों में आदमी) लेकिन सबसे आसान समाधान।

बेहतर तरीका यह है कि मेजबान और आईपी पते के बीच सही मैपिंग उत्पन्न करें, ताकि sshशिकायत न हो:

#!/bin/bash

for domain in "github.com" "bitbucket.org"; do
    sed -i "/$domain/d" ~/.ssh/known_hosts
    line=$(ssh-keyscan $domain,`nslookup $domain | awk '/^Address: / { print $2 ; exit }'`)
    echo $line >> ~/.ssh/known_hosts
done

से अंश सार


3
यह संभावित MITM हमलों के लिए आपको खोलता है।
ctc

1
आप -oStrictHostKeyChecking = no जोड़ सकते हैं और एक बार कनेक्ट कर सकते हैं, जो होस्ट को ज्ञात_होस्ट फ़ाइल में जोड़ देगा (जैसे ही आप कमांड लाइन पर ssh करते हैं और ज्ञात_hosts फ़ाइल की कुंजी जोड़ने के लिए हाँ टाइप करें और उसके बाद इस विकल्प को हटा दें।
कृपानि

6

एक ही समस्या थी, मैं इसे इस तरह से ठीक करता हूं:

id_rsa पर रीसेट अनुमति * केवल वर्तमान उपयोगकर्ता के लिए कोई समूह नहीं अन्य

chmod o-rwx ~/.ssh/id*
chmod G-rwx ~/.ssh/id*

ls -lart ~/.ssh/


-rw-------  1 jenkins nogroup  398 avril  3 09:34 id_rsa.pub
-rw-------  1 jenkins nogroup 1675 avril  3 09:34 id_rsa

और स्पष्ट ~ / .ssh / know_hosts

अब जेनकिंस के रूप में कनेक्ट करें

sudo su jenkins

जेनकिंस कमांड का प्रयास करें

git ls-remote -h git@bitbucket.org:user/project.git HEAD

यदि कोई समस्या नहीं दिखाई देती है, तो अब जेनकींस रेपो को कनेक्ट करने में सक्षम होंगे (मेरे लिए ^ ^ कम से कम)


1
समूह की अनुमति बदलने के लिए उपरोक्त कमांड (chmod G-rwx ~ / .ssh / id *) विफल रही। नीचे के रूप में वांछित काम किया। chmod g-rwx ~ / .ssh / id *
samaitra


3
  • सुनिश्चित करें कि हम त्रुटि को छोड़ने के लिए किसी भी डिफ़ॉल्ट sshd_config गुणों का संपादन नहीं कर रहे हैं

  • होस्ट सत्यापन विफल - निश्चित रूप से known_hostsफ़ाइल में hostname की एक लापता प्रविष्टि

  • सर्वर में लॉग इन करें जहां प्रक्रिया विफल हो रही है और निम्नलिखित कार्य करें:

    1. प्रक्रिया चलाने वाले उपयोगकर्ता को सूडो

    2. ssh-copy-id destinationuser@destinationhostname

    3. यह पहली बार इस तरह का संकेत देगा, हां कहेगा और यह पहली बार पासवर्ड भी पूछेगा:

      The authenticity of host 'sample.org (205.214.640.91)' can't be established.
      RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
      Are you sure you want to continue connecting (yes/no)? *yes*
      

      पासवर्ड शीघ्र? पासवर्ड दें

    4. अब सर्वर से जहां प्रक्रिया चल रही है, करें ssh destinationuser@destinationhostname। इसे पासवर्ड के बिना लॉगिन करना चाहिए।

      नोट: उपयोगकर्ता की .sh निर्देशिका में फ़ाइलों की डिफ़ॉल्ट अनुमतियों को न बदलें , आप विभिन्न मुद्दों के साथ समाप्त हो जाएंगे


चरण 3 में, ऐसा हो सकता है कि, आपको फ़ाइल में पहले से मौजूद कुंजी के साथ संकेत दिया जाए, लेकिन आपको यह 4 चरण जारी रखने चाहिए और यदि आप jenkins उपयोगकर्ता से पासवर्ड के बिना लॉगिन कर सकते हैं, तो आप सभी सेट हैं।
रकीबुल हक

3

वर्कअराउंड के लिए (उदाहरण के लिए Windows दास), वैश्विक गुणों में निम्नलिखित पर्यावरण चर को परिभाषित करें:

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"

जेनकिंस, वैश्विक गुण, पर्यावरण चर, GIT_SSH_COMMAND

नोट: यदि आप विकल्प नहीं देखते हैं, तो आपको संभवतः इसके लिए EnvInject प्लगइन की आवश्यकता होगी ।


3

Bitbucket और github दोनों से होस्ट कीज़ कॉपी करें:

ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa bitbucket.org)" >> /root/.ssh/known_hosts'
ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa github.com)" >> /root/.ssh/known_hosts'

2

सबसे अच्छा तरीका है कि आप अपने "git url" का उपयोग जेनकिन्सफाइल में 'https' URL फॉर्मेट में या जहाँ भी चाहें कर सकते हैं।

git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'


2

SSH

यदि आप इसे SSH के साथ आज़मा रहे हैं, तो होस्ट कुंजी सत्यापन त्रुटि कई कारणों से आ सकती है। सभी कारणों को दूर करने के लिए इन चरणों का पालन करें।

  1. घर के रूप में पर्यावरण चर सेट करें और .ssh फ़ोल्डर की रूट निर्देशिका के रूप में पता प्रदान करें । जैसे: - अगर आपका .sh नाम फ़ोल्डर के अंदर रखा गया है । सी: / उपयोगकर्ताओं / नाम।
  2. अब सुनिश्चित करें कि सार्वजनिक SSH कुंजी रिपॉजिटरी लिंक में भी प्रदान की जा रही है। या तो यह गितूब या बिटबकेट या कोई अन्य है।
  3. खुली गश मार। और रिपॉजिटरी से प्रोजेक्ट को क्लोन करने की कोशिश करें। यह ज्ञात_होस्ट फ़ाइल में आपके रिपॉजिटरी URL को जोड़ने में मदद करेगा, जो कि .ssh फ़ोल्डर में ऑटो बनाया जा रहा है।
  4. अब जेनकिंस खोलें और एक नया काम बनाएं। फिर कॉन्फ़िगर पर क्लिक करें।
  5. Git के तहत सोर्स कोड प्रबंधन में क्लोनिंग URL प्रदान करें। URL को git@github.com / ......... या ssh: // proje ........ से शुरू किया जाना चाहिए
  6. क्रेडेंशियल के तहत आपको अपने रिपॉजिटरी फॉर्म के उपयोगकर्ता नाम और पासवर्ड को जोड़ने की आवश्यकता है जिसे आप प्रोजेक्ट को क्लोन कर रहे हैं। उस क्रेडेंशियल का चयन करें।
  7. और अब कॉन्फ़िगरेशन को लागू करें और सहेजें।
  8. बिंगो! प्रोजेक्ट बनाना शुरू करें। मुझे उम्मीद है कि अब आपको कोई Host Key सत्यापन त्रुटि नहीं मिलेगी!

2
  1. लॉगिन का उपयोग करते हुए जेनकींस के रूप में: "सुडो सु-एस / बिन / बैश जेनकिंस"
  2. git इच्छित रेपो को क्लोन करता है जो प्रमुख त्रुटि का कारण बनता है
  3. यह आपको हाँ / नहीं (हाँ या वाई दर्ज करके) कुंजी जोड़ने के लिए कहेगा

बस!

अब आप जेनकिंस जॉब को फिर से चला सकते हैं।

मुझे उम्मीद है कि यह आपके मुद्दे को ठीक कर देगा।


2

मैं इस मुद्दे में भाग गया और यह समस्या यह है कि जेनकींस सेवा जेनकींस उपयोगकर्ता के रूप में नहीं चलाया जा रहा था। इसलिए कमांड को चलाने के रूप में जेनकिंस उपयोगकर्ता ने ठीक काम किया।


1

प्रयत्न

ssh-keygen -R hostname

-R होस्टनाम एक ज्ञात_होस्ट फ़ाइल से होस्टनाम से संबंधित सभी कुंजियों को निकालता है। यह विकल्प हैशेड होस्ट को हटाने के लिए उपयोगी है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.