Jenkins Host anahtarı doğrulaması başarısız oldu


164

Jenkins ile ilgili bir sorunum var , "git" ayarı, aşağıdaki hatayı gösterir:

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 ile test ettim :

git@bitbucket.org:person/projectmarket.git

Bu bir hatadır:

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

Bu adımları "SSH anahtarı" ile de yaptım.

Jenkins ile giriş yapın

sudo su jenkins

Github anahtarınızı Jenkins .ssh klasörüne kopyalayın

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

Anahtarları yeniden adlandırma

mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub

ama hala jenkins depo git çalışmıyor .

yardım ile teşekkürler !.



jenkins kullanıcısı yok
IceFire

Yanıtlar:


183

jenkinsKullanıcıya geçin ve komutu manuel olarak çalıştırın:

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

SSH aracılığıyla yeni bir ana bilgisayara ilk bağlanırken standart SSH uyarısı alırsınız:

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)?

Yazıp yesEnter tuşuna basın. İçin ana bilgisayar anahtarı bitbucket.orgartık ~/.ssh/known_hostsdosyaya eklenecek ve bu hatayı artık Jenkins'te almayacaksınız.


6
bunu göster: İzin verilmedi (publickey). ölümcül: Uzak uç beklenmedik bir şekilde telefonu kapattı
AM Mérida

6
Doğru, ama bu tamamen farklı bir hata. Şimdi bitbucket.org adresindeki genel anahtarınızı depoya eklemelisiniz.
ctc


2
"Worksforme" için + 1, aynı sorunu vardı. Uygun kullanıcı için id_rsa oluşturuldu, jenkins'e chmod-ed, ortak anahtarı ekledi, yine de çalışmadı. Git'i sudo -u jenkins olarak denemek knonwn_hosts dosyasını sağlayarak sorunu çözdü.
sibidiba

3
Jenkins çalıştıran kullanıcı olarak çalıştırmanız gerekir. Çoğu sistemde, kişi genellikle ayrı bir kullanıcı olarak çalışır (örneğin, bir 'jenkins' kullanıcısı). Bu nedenle, bitbucket.org adresinin ~ / .ssh / bilinen_hosts'a eklendiğinden emin olmak için bu kullanıcıya geçmeniz gerekir.
ctc

43

Jenkins bir hizmet hesabıdır, tasarıma göre bir kabuğu yoktur. Hizmet hesaplarının genellikle kabul edildiği görülür. etkileşimli olarak oturum açamamalıdır.

"Jenkins Ana bilgisayar anahtarı doğrulaması başarısız oldu" sorunu gidermek için aşağıdaki adımları izleyin. Cenkins ile cıva kullandım.

1) Terminalde aşağıdaki komutları yürütün

             $ sudo su -s /bin/bash jenkins

şifre gir

2) Aşağıdaki komutu kullanarak genel özel anahtar oluşturun:

              ssh-keygen

çıktıyı şöyle görebilirsiniz:

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 -> Parola vermeyin -> enter tuşuna basın

             Key has been generated

4) -> cat /var/lib/jenkins/.ssh/id_rsa.pub adresine gidin.

5) id_rsa.pub anahtarını kopyala

6) Bash'tan çıkış

7) ssh@yourrepository

8) vi .ssh/authorized_keys

9) Anahtarı yapıştırın

10) Çıkış

11) Mercurial sunucusuna manuel olarak giriş yapın

Not: Pls manuel olarak giriş yapar, aksi takdirde jenkins tekrar "ana bilgisayar doğrulaması başarısız oldu" hatası verir

12) bir kez elle yapılır, Şimdi Jenkins gidin ve yapı vermek

Zevk almak!!!

İyi şanslar


Burada hangi şifre isteniyor?
IceFire

26

Veya şunları kullanabilirsiniz:

ssh -oStrictHostKeyChecking=no host

Bu güvensiz (orta saldırılardaki adam) ama en kolay çözüm olacaktır.

Bunu yapmanın en iyi yolu, ana bilgisayar ve ip adresi arasında doğru eşlemeler oluşturmaktır, bu yüzden sshşikayet etmeyecektir:

#!/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

Alıntı Ana fikir .


3
Bu sizi potansiyel MITM saldırılarına açar.
ctc

1
-OStrictHostKeyChecking = no ekleyebilir ve bir kez bağlanabilirsiniz; bu, anasistemi bilinen_hosts dosyasına ekler (komut satırında ssh ile aynıdır ve anahtarı bilinen_hosts dosyasına eklemek için yes yazın) ve ardından bu seçeneği kaldırırsınız.
krupan

6

Aynı sorun vardı, ben böyle düzeltin:

id_rsa * üzerindeki izni sıfırla sadece mevcut kullanıcı için grup yok başka grup yok

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

Ve temizle ~ / .ssh / know_hosts

Şimdi jenkins olarak bağlan

sudo su jenkins

Jenkins komutlarını deneyin

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

Herhangi bir sorun ortaya çıkmazsa, jenkinler repoyu bağlayabilecek (en azından benim için ^^)


1
Grup iznini değiştirmek için yukarıdaki komut (chmod G-rwx ~ / .ssh / id *) başarısız oldu. Aşağıdakiler istendiği gibi çalıştı. chmod g-rwx ~ / .ssh / id *
samaitra


3
  • Hatayı atlamak için varsayılan sshd_config özelliklerinden hiçbirini düzenlemediğimizden emin olun

  • Ana Bilgisayar Doğrulaması Başarısız - known_hostsDosyada kesinlikle ana bilgisayar adı eksik

  • İşlemin başarısız olduğu sunucuda oturum açın ve aşağıdakileri yapın:

    1. Sudo süreci çalıştıran kullanıcıya

    2. ssh-copy-id destinationuser@destinationhostname

    3. İlk kez böyle isteyecektir, evet deyin ve ilk kez şifre isteyecektir:

      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*
      

      Şifre istemi? şifre ver

    4. Şimdi işlemin çalıştığı sunucudan yapın ssh destinationuser@destinationhostname. Şifre olmadan giriş yapmalıdır.

      Not: Kullanıcının .ssh dizinindeki dosyaların varsayılan izinlerini değiştirmeyin, farklı sorunlarla karşılaşırsınız


3. adımda, dosyada zaten anahtarın bulunması istenebilir, ancak bu 4 adıma devam etmelisiniz ve jenkins kullanıcısından parola olmadan oturum açabiliyorsanız, hepiniz ayarlısınız.
Rakibul Haq

3

Geçici çözüm için (örn. Windows slave), global özelliklerde aşağıdaki ortam değişkenini tanımlayın:

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

Jenkins, Global özellikler, Ortam değişkenleri, GIT_SSH_COMMAND

Not: Seçeneği görmüyorsanız, muhtemelen bunun için EnvInject eklentisine ihtiyacınız vardır .


3

Ana bilgisayar anahtarlarını bitbucket ve github'dan kopyalayın:

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" kodunuzu "https" URL biçiminde Jenkinsfile veya istediğiniz herhangi bir yerde kullanabilirsiniz.

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


2

SSH

SSH ile deniyorsanız, Host anahtarı Doğrulama hatası birkaç nedenden dolayı gelebilir.Tüm nedenleri aşmak için bu adımları izleyin.

  1. Ortam değişkenini HOME olarak ayarlayın ve adresi .ssh klasörünün kök dizini olarak sağlayın . Örn:: .ssh dosyanız Name klasöründe tutulursa . C: / Users / Ad.
  2. Şimdi, genel SSH anahtarının depo bağlantısında da sağlandığından emin olun. Ya github ya da bitbucket ya da başka bir şey.
  3. Git bash'ı açın. Ve projeyi depodan klonlamayı deneyin. Bu, .ssh klasöründe otomatik olarak oluşturulan bilinen_host dosyasına depo URL'nizi eklemenize yardımcı olacaktır.
  4. Şimdi jenkinleri açın ve yeni bir iş yaratın. Ardından yapılandır'a tıklayın.
  5. Git altındaki Kaynak kodu yönetiminde klonlama URL'sini sağlayın. URL git@github.com / ......... veya ssh: // proje ........ ile başlamalıdır.
  6. Kimlik Bilgisi altında, projeyi klonladığınız havuz formunuzun kullanıcı adını ve şifresini eklemeniz gerekir. Bu kimlik bilgilerini seçin.
  7. Şimdi yapılandırmayı uygulayın ve kaydedin.
  8. Bingo! Projeyi oluşturmaya başlayın. Umarım şimdi herhangi bir Ana Bilgisayar Anahtarı doğrulama hatası almazsınız!

2
  1. "sudo su -s / bin / bash jenkins" kullanarak jenkins olarak giriş yapın
  2. git anahtar hatasına neden olan istenen repoyu kopyalayın
  3. sizden Evet / Hayır göstererek anahtarı eklemenizi isteyecektir (evet veya y girin)

bu kadar!

Artık jenkins işini yeniden çalıştırabilirsiniz.

Umarım bu sorununuzu çözer.


2

Bu sorunla karşılaştım ve sorunun jenkins hizmetinin jenkins kullanıcısı olarak çalıştırılmaması olduğu ortaya çıktı. Yani jenkins kullanıcısı olarak komutları çalıştırmak gayet iyi çalıştı.


1

Deneyin

ssh-keygen -R ana bilgisayar adı

-R anamakine adı Bilinen_hosts dosyasından anasistem adına ait tüm anahtarları kaldırır. Bu seçenek karma ana bilgisayarları silmek için kullanışlıdır

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.