Verifikasi kunci Host Jenkins gagal

164

Saya punya masalah dengan jenkins , pengaturan "git", menunjukkan kesalahan berikut:

Failed to connect to repository : Command "git ls-remote -h https://[email protected]/person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: fatal: Authentication failed

Saya telah menguji dengan ssh :

[email protected]:person/projectmarket.git

Ini kesalahan:

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

Saya juga telah melakukan langkah-langkah ini dengan "kunci SSH".

Login di bawah Jenkins

sudo su jenkins

Salin kunci github Anda ke folder Jenkins .ssh

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

Ganti nama kunci

mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub

tapi masih tidak bekerja repositori git di jenkins .

terima kasih atas bantuan !.

AM Mérida
sumber
tidak ada pengguna jenkins yang ada
IceFire

Jawaban:

183

Ubah ke jenkinspengguna dan jalankan perintah secara manual:

git ls-remote -h [email protected]:person/projectmarket.git HEAD

Anda akan mendapatkan peringatan SSH standar saat pertama kali terhubung ke host baru melalui 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)?

Ketik yesdan tekan Enter. Kunci host bitbucket.orgsekarang akan ditambahkan ke ~/.ssh/known_hostsfile dan Anda tidak akan mendapatkan kesalahan ini di Jenkins lagi.

ctc
sumber
6
perlihatkan ini: Izin ditolak (publickey). fatal: Ujung remote digantung tiba
AM Mérida
6
Benar, tapi itu kesalahan yang sangat berbeda. Sekarang Anda harus menambahkan kunci publik Anda ke repositori di bitbucket.org.
ctc
2
+1 untuk "worksforme", memiliki masalah yang sama persis. Dibuat id_rsa untuk pengguna yang tepat, chmod-ed ke jenkins, menambahkan kunci publik, masih tidak berfungsi. Mencoba git ketika sudo -u jenkins menghasilkan file knonwn_hosts, memperbaiki masalahnya.
sibidiba
3
Anda harus menjalankannya sebagai pengguna yang menjalankan Jenkins. Pada kebanyakan sistem, seseorang biasanya menjalankannya sebagai pengguna yang terpisah (misalnya pengguna 'jenkins'). Oleh karena itu, Anda harus beralih ke pengguna itu untuk memastikan bahwa alamat bitbucket.org ditambahkan ke ~ / .ssh / known_hosts.
ctc
43

Jenkins adalah akun layanan, itu tidak memiliki desain shell. Secara umum diterima bahwa akun layanan. seharusnya tidak dapat masuk secara interaktif.

Untuk menyelesaikan "Verifikasi kunci Host Jenkins gagal", lakukan langkah-langkah berikut. Saya telah menggunakan lincah dengan jenkins.

1) Jalankan perintah berikut pada terminal

             $ sudo su -s /bin/bash jenkins

berikan kata sandi

2) Hasilkan kunci pribadi publik menggunakan perintah berikut:

              ssh-keygen

Anda dapat melihat output sebagai ::

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) Tekan Enter -> Jangan berikan frasa sandi -> tekan enter

             Key has been generated

4) pergi ke -> cat /var/lib/jenkins/.ssh/id_rsa.pub

5) Salin kunci dari id_rsa.pub

6) Keluar dari bash

7) ssh@yourrepository

8) vi .ssh/authorized_keys

9) Rekatkan kuncinya

10) keluar

11) Login secara manual ke server lincah

Catatan: Mohon login secara manual jika tidak, jenkins akan kembali memberikan kesalahan "verifikasi host gagal"

12) setelah dilakukan secara manual, Sekarang pergi ke Jenkins dan berikan build

Nikmati!!!

Semoga berhasil

Feroz Ahmed Ansari
sumber
Kata sandi apa yang diminta di sini?
IceFire
26

Atau Anda dapat menggunakan:

ssh -oStrictHostKeyChecking=no host

Ini akan menjadi tidak aman (man in the middle attacks) tetapi solusi termudah.

Cara yang lebih baik untuk melakukannya adalah membuat pemetaan yang benar antara host dan alamat ip, jadi sshtidak akan mengeluh:

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

Kutipan dari intisari .

FelikZ
sumber
3
Ini membuka Anda hingga potensi serangan MITM.
ctc
1
Anda dapat menambahkan -oStrictHostKeyChecking = tidak dan terhubung sekali, yang akan menambahkan host ke file known_hosts (sama seperti ketika Anda ssh pada baris perintah dan ketik yes untuk menambahkan kunci ke file known_hosts) dan kemudian hapus opsi ini setelah itu.
krupan
6

Punya masalah yang sama, saya memperbaikinya seperti itu:

atur ulang izin id_rsa * hanya untuk pengguna saat ini, tidak ada grup, tidak lain

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

Dan hapus ~ / .ssh / know_hosts

Sekarang Hubungkan sebagai jenkins

sudo su jenkins

Coba perintah jenkins

git ls-remote -h [email protected]:user/project.git HEAD

Jika tidak ada masalah muncul, sekarang jenkins akan dapat menghubungkan repo (setidaknya untuk saya ^^)

Loodub
sumber
1
Perintah di atas (chmod G-rwx ~ / .ssh / id *) untuk mengubah izin grup gagal. Di bawah ini berfungsi seperti yang diinginkan. chmod g-rwx ~ / .ssh / id *
samaitra
3
  • Pastikan kami tidak mengedit properti sshd_config default apa pun untuk melewati kesalahan

  • Verifikasi Host Gagal - Pasti ada entri nama host yang hilang dalam known_hostsfile

  • Login ke server di mana proses gagal dan lakukan hal berikut:

    1. Sudo kepada pengguna yang menjalankan proses

    2. ssh-copy-id destinationuser@destinationhostname

    3. Ini akan meminta seperti ini untuk pertama kalinya, katakan ya dan itu juga akan meminta kata sandi untuk pertama kalinya:

      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*
      

      Kata sandi cepat? berikan kata sandi

    4. Sekarang dari server tempat proses berjalan, lakukan ssh destinationuser@destinationhostname. Ini harus masuk tanpa kata sandi.

      Catatan: Jangan mengubah izin default file di direktori .ssh pengguna , Anda akan berakhir dengan masalah yang berbeda

GANESH
sumber
pada langkah 3, mungkin itu terjadi, Anda diminta dengan kunci yang sudah ada dalam file, tetapi Anda harus melanjutkan ini 4 langkah dan jika Anda bisa login tanpa kata sandi dari pengguna jenkins, maka Anda sudah siap.
Rakibul Haq
3

Adapun solusinya (misalnya Windows slave), tentukan variabel lingkungan berikut dalam properti global:

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

Jenkins, Properti global, variabel Lingkungan, GIT_SSH_COMMAND

Catatan: Jika Anda tidak melihat opsi, Anda mungkin memerlukan plugin EnvInject untuk itu.

kenorb
sumber
3

Salin kunci host dari bitbucket dan 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'
Marco M.
sumber
2

Cara terbaik Anda bisa menggunakan "git url" dalam format URL 'https "di Jenkinsfile atau di mana pun Anda inginkan.

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

Nitin
sumber
2

SSH

Jika Anda mencobanya dengan SSH, maka kesalahan Verifikasi kunci Host dapat terjadi karena beberapa alasan. Ikuti langkah-langkah ini untuk mengatasi semua alasan.

  1. Setel variabel Lingkungan sebagai HOME dan berikan alamat sebagai direktori root dari folder .ssh . mis .: - Jika .ssh Anda disimpan di dalam folder Name . C: / Pengguna / Nama.
  2. Sekarang pastikan bahwa kunci SSH publik juga disediakan di tautan repositori. Entah itu github atau bitbucket atau yang lainnya.
  3. Buka git bash. Dan coba kloning proyek dari repositori. Ini akan membantu dalam menambahkan URL repositori Anda di file known_host, yang sedang dibuat secara otomatis di folder .ssh.
  4. Sekarang buka jenkins dan buat pekerjaan baru. Kemudian klik pada configure.
  5. memberikan URL kloning dalam manajemen kode sumber di bawah Git. URL harus dimulai dengan [email protected] / ......... atau ssh: // proje ........
  6. Di bawah Kredensial Anda perlu menambahkan nama pengguna dan kata sandi dari formulir repositori yang Anda kloning proyek. Pilih kredensial itu.
  7. Dan sekarang terapkan dan simpan konfigurasi.
  8. Bingo! Mulailah membangun proyek. Saya harap sekarang Anda tidak akan mendapatkan kesalahan verifikasi Key Host!
Prem Choudhary
sumber
2
  1. login sebagai jenkins menggunakan: "sudo su -s / bin / bash jenkins"
  2. git mengkloning repo yang diinginkan yang menyebabkan kesalahan kunci
  3. itu akan meminta Anda untuk menambahkan kunci dengan menunjukkan Ya / Tidak (masukkan ya atau y)

itu dia!

Anda sekarang dapat menjalankan kembali pekerjaan jenkins.

Saya harap Anda ini akan memperbaiki masalah Anda.

Timothy Asir
sumber
2

Saya mengalami masalah ini dan ternyata masalahnya adalah bahwa layanan jenkins tidak dijalankan sebagai pengguna jenkins. Jadi menjalankan perintah sebagai pengguna jenkins bekerja dengan baik.

Jeff Hutchins
sumber
1

Mencoba

ssh-keygen -R hostname

-R hostname Menghapus semua kunci milik hostname dari file known_hosts. Opsi ini berguna untuk menghapus host hash

Aswathy Unni
sumber