Xác minh khóa máy chủ Jenkins không thành công


164

Tôi gặp vấn đề với jenkins , cài đặt "git", hiển thị lỗi sau:

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

Tôi đã thử nghiệm với ssh :

git@bitbucket.org:person/projectmarket.git

Đây là lỗi:

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

Tôi cũng đã thực hiện các bước này với "khóa SSH".

Đăng nhập dưới Jenkins

sudo su jenkins

Sao chép khóa github của bạn vào thư mục Jenkins .ssh

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

Đổi tên các phím

mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub

nhưng vẫn không hoạt động kho git trong jenkins .

cảm ơn sự giúp đỡ!.



không có người dùng
jenkins nào

Câu trả lời:


183

Thay đổi jenkinsngười dùng và chạy lệnh thủ công:

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

Bạn sẽ nhận được cảnh báo SSH tiêu chuẩn khi lần đầu tiên kết nối với máy chủ mới thông qua 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)?

Kiểu yes và nhấn Enter. Khóa máy chủ bitbucket.orgbây giờ sẽ được thêm vào ~/.ssh/known_hoststệp và bạn sẽ không gặp lỗi này trong Jenkins nữa.


6
hiển thị điều này: Quyền bị từ chối (khóa công khai). gây tử vong: Kết thúc từ xa treo lên bất ngờ
AM Mérida

6
Đúng, nhưng đó là một lỗi hoàn toàn khác nhau. Bây giờ bạn phải đi thêm khóa công khai của mình vào kho lưu trữ tại bitbucket.org.
ctc


2
+1 cho "workforme", có cùng một vấn đề. Đã tạo id_rsa cho người dùng thích hợp, chmod-ed thành jenkins, đã thêm khóa công khai, vẫn không hoạt động. Thử dùng git như sudo -u jenkins đã mang lại tệp knonwn_hosts, khắc phục sự cố.
sibidiba

3
Bạn cần chạy nó với tư cách là người dùng đang chạy Jenkins. Trên hầu hết các hệ thống, người ta thường chạy nó dưới dạng một người dùng riêng biệt (ví dụ: người dùng 'jenkins'). Do đó, bạn sẽ cần phải chuyển sang người dùng đó để đảm bảo rằng địa chỉ cho bitbucket.org được thêm vào ~ / .ssh / unknown_hosts.
ctc

43

Jenkins là một tài khoản dịch vụ, nó không có vỏ theo thiết kế. Nó thường được chấp nhận rằng các tài khoản dịch vụ. không nên đăng nhập tương tác.

Để giải quyết "Xác minh khóa máy chủ Jenkins không thành công", hãy thực hiện các bước sau. Tôi đã sử dụng đồng bóng với jenkins.

1) Thực hiện các lệnh sau trên thiết bị đầu cuối

             $ sudo su -s /bin/bash jenkins

cung cấp mật khẩu

2) Tạo khóa riêng công khai bằng lệnh sau:

              ssh-keygen

bạn có thể thấy đầu ra là ::

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) Nhấn Enter -> Không đưa ra bất kỳ cụm mật khẩu nào -> nhấn enter

             Key has been generated

4) đi đến -> mèo /var/lib/jenkins/.ssh/id_rsa.pub

5) Sao chép khóa từ id_rsa.pub

6) Thoát khỏi bash

7) ssh@yourrepository

số 8) vi .ssh/authorized_keys

9) Dán chìa khóa

10) thoát

11) Đăng nhập thủ công vào máy chủ đồng bóng

Lưu ý: Xin vui lòng đăng nhập thủ công nếu không jenkins sẽ lại đưa ra lỗi "xác minh máy chủ không thành công"

12) một khi được thực hiện thủ công, Bây giờ hãy đến Jenkins và đưa ra bản dựng

Thưởng thức!!!

Chúc may mắn


Mật khẩu được yêu cầu ở đây là gì?
IceFire

26

Hoặc bạn có thể sử dụng:

ssh -oStrictHostKeyChecking=no host

Điều này sẽ không an toàn (người đàn ông trong các cuộc tấn công giữa) nhưng giải pháp dễ nhất.

Cách tốt hơn để làm điều đó là tạo ánh xạ chính xác giữa máy chủ và địa chỉ IP, vì vậy sshsẽ không phàn nàn:

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

Trích từ ý chính .


3
Điều này mở ra cho bạn các cuộc tấn công MITM tiềm năng.
ctc

1
Bạn có thể thêm -oStricthostKeyChecking = no và kết nối một lần, điều này sẽ thêm máy chủ vào tệp know_hosts (giống như khi bạn ssh trên dòng lệnh và nhập yes để thêm khóa vào tệp đã biết) sau đó xóa tùy chọn này.
krupan

6

Có vấn đề tương tự, tôi sửa nó như thế:

đặt lại quyền trên id_rsa * chỉ cho người dùng hiện tại không có nhóm nào khác

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

Và xóa ~ / .ssh / know_hosts

Bây giờ Kết nối như jenkins

sudo su jenkins

Hãy thử các lệnh jenkins

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

Nếu không có vấn đề gì xuất hiện, bây giờ jenkins sẽ có thể kết nối repo (ít nhất là đối với tôi ^^)


1
Lệnh trên (chmod G-rwx ~ / .ssh / id *) để thay đổi quyền nhóm không thành công. Dưới đây làm việc như mong muốn. chmod g-rwx ~ / .ssh / id *
samaitra


3
  • Đảm bảo rằng chúng tôi không chỉnh sửa bất kỳ thuộc tính sshd_config mặc định nào để bỏ qua lỗi

  • Xác minh máy chủ không thành công - Chắc chắn là thiếu mục nhập tên máy chủ trong known_hoststệp

  • Đăng nhập vào máy chủ nơi quá trình không thành công và làm như sau:

    1. Sudo cho người dùng đang chạy quá trình

    2. ssh-copy-id destinationuser@destinationhostname

    3. Nó sẽ nhắc như thế lần đầu tiên, nói có và nó cũng sẽ hỏi mật khẩu lần đầu tiên:

      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*
      

      Mật khẩu nhắc? cho mật khẩu

    4. Bây giờ từ máy chủ nơi quá trình đang chạy, làm ssh destinationuser@destinationhostname. Nó sẽ đăng nhập mà không cần mật khẩu.

      Lưu ý: Không thay đổi quyền mặc định của các tệp trong thư mục .ssh của người dùng , bạn sẽ gặp các vấn đề khác nhau


trong bước 3, có thể là trường hợp, bạn được nhắc với khóa đã tồn tại trong tệp, nhưng bạn nên tiếp tục 4 bước này và nếu bạn có thể đăng nhập mà không cần mật khẩu từ người dùng jenkins, thì bạn đã cài đặt xong.
Rakibul Haq

3

Đối với cách giải quyết (ví dụ: nô lệ Windows), hãy xác định biến môi trường sau trong các thuộc tính toàn cục:

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

Jenkins, Thuộc tính toàn cầu, Biến môi trường, GIT_SSH_COMMAND

Lưu ý: Nếu bạn không thấy tùy chọn này, có lẽ bạn cần plugin EnvInject cho nó.


3

Sao chép khóa máy chủ từ cả bitbucket và 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

Cách tốt nhất bạn chỉ có thể sử dụng "git url" trong định dạng URL 'https "trong Jenkinsfile hoặc bất cứ nơi nào bạn muốn.

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


2

SSH

Nếu bạn đang dùng thử với SSH, thì lỗi Xác minh khóa máy chủ có thể xuất phát do một số lý do. Thực hiện theo các bước này để khắc phục tất cả các lý do.

  1. Đặt biến Môi trường là HOME và cung cấp địa chỉ làm thư mục gốc của thư mục .ssh . ví dụ: - Nếu .ssh của bạn được giữ trong thư mục Tên . C: / Người dùng / Tên.
  2. Bây giờ hãy đảm bảo rằng khóa SSH công khai cũng được cung cấp trong liên kết kho lưu trữ. Hoặc là github hoặc bitbucket hoặc bất kỳ khác.
  3. Mở git bash. Và thử nhân bản dự án từ kho lưu trữ. Điều này sẽ giúp thêm URL kho lưu trữ của bạn vào tệp know_host đang được tạo tự động trong thư mục .ssh.
  4. Bây giờ hãy mở jenkins và tạo một công việc mới. Sau đó bấm vào cấu hình.
  5. cung cấp URL nhân bản trong quản lý mã nguồn theo Git. URL phải được bắt đầu bằng git@github.com / ......... hoặc ssh: // proje ........
  6. Trong Thông tin xác thực, bạn cần thêm tên người dùng và mật khẩu của biểu mẫu kho lưu trữ mà bạn đang nhân bản dự án. Chọn thông tin đó.
  7. Và bây giờ áp dụng và lưu cấu hình.
  8. Chơi lô tô! Bắt đầu xây dựng dự án. Tôi hy vọng bây giờ bạn sẽ không nhận được bất kỳ lỗi xác minh Khóa máy chủ nào!

2
  1. đăng nhập như jenkins bằng cách sử dụng: "sudo su -s / bin / bash jenkins"
  2. git sao chép repo mong muốn gây ra lỗi chính
  3. nó sẽ yêu cầu bạn thêm khóa bằng cách hiển thị Có / Không (nhập có hoặc y)

đó là nó!

bây giờ bạn có thể chạy lại công việc jenkins.

Tôi hy vọng bạn điều này sẽ khắc phục vấn đề của bạn.


2

Tôi gặp vấn đề này và hóa ra vấn đề là dịch vụ jenkins không được chạy với tư cách là người dùng jenkins. Vì vậy, chạy các lệnh như người dùng jenkins hoạt động tốt.


1

Thử

tên máy chủ ssh-keygen -R

Tên máy chủ -R Xóa tất cả các khóa thuộc về tên máy chủ khỏi tệp đã biết. Tùy chọn này hữu ích để xóa các máy chủ băm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.