Jenkins 호스트 키 확인 실패


164

jenkins에 문제가 있는데 "git"을 설정하면 다음 오류가 표시됩니다.

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 키"를 사용하여이 단계를 수행했습니다.

Jenkins에서 로그인

sudo su jenkins

github 키를 Jenkins .ssh 폴더로 복사하십시오.

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

키 이름 바꾸기

mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub

그러나 jenkins 에서는 여전히 git 저장소가 작동하지 않습니다 .

도와 주셔서 감사합니다!.



jenkins 사용자가 없음
IceFire

답변:


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하고 Enter를 누르십시오. 의 호스트 키 bitbucket.org가 이제 ~/.ssh/known_hosts파일에 추가되며 더 이상 Jenkins에서이 오류가 발생하지 않습니다.


6
표시 : 권한이 거부되었습니다 (공개 키). 치명적 : 원격 끝이 예기치 않게
끊어짐

6
맞습니다. 그러나 그것은 완전히 다른 오류입니다. 이제 bitbucket.org의 저장소에 공개 키를 추가해야합니다.
ctc


2
"worksforme"에 +1도 똑같은 문제가있었습니다. 적절한 사용자를 위해 id_rsa를 작성했으며, jenkins에 chmod-ed로 공개 키를 추가했지만 여전히 작동하지 않았습니다. git을 sudo -u jenkins로 시도하면 knonwn_hosts 파일이 생성되어 문제가 해결되었습니다.
sibidiba

3
Jenkins를 실행중인 사용자로 실행해야합니다. 대부분의 시스템에서 일반적으로 별도의 사용자 (예 : 'jenkins'사용자)로 실행합니다. 따라서 bitbucket.org의 주소가 ~ / .ssh / known_hosts에 추가되도록 해당 사용자로 전환해야합니다.
ctc

43

Jenkins는 서비스 계정으로 설계 상 쉘이 없습니다. 일반적으로 해당 서비스 계정이 허용됩니다. 대화식으로 로그인 할 수 없습니다.

"Jenkins 호스트 키 확인 실패"를 해결하려면 다음 단계를 수행하십시오. 젠킨스와 함께 수은을 사용했습니다.

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를 누르십시오-> 암호를 입력하지 마십시오-> Enter를 누르십시오

             Key has been generated

4)-> cat /var/lib/jenkins/.ssh/id_rsa.pub로 이동하십시오.

5) id_rsa.pub에서 키를 복사

6) bash에서 나가십시오

7) ssh@yourrepository

8) vi .ssh/authorized_keys

9) 키 붙여 넣기

10) 출구

11) 수은 서버에 수동으로 로그인

참고 : Pls는 수동으로 로그인하지 않습니다. 그렇지 않으면 jenkins는 "호스트 확인 실패"오류를 다시 표시합니다.

12) 한 번 수동으로 완료하면 Jenkins로 이동하여 빌드하십시오.

즐겨!!!

행운을 빕니다


여기에 어떤 비밀번호가 요청됩니까?
IceFire

26

또는 다음을 사용할 수 있습니다.

ssh -oStrictHostKeyChecking=no host

이것은 안전하지 않지만 (중간 공격의 사람) 가장 쉬운 솔루션입니다.

더 좋은 방법은 호스트와 IP 주소 사이에 올바른 매핑을 생성하는 것이므로 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를 추가하고 한 번 연결하면 호스트를 known_hosts 파일에 추가 할 수 있습니다 (명령 줄에서 ssh를 실행하고 yes를 입력하여 known_hosts 파일에 키를 추가 한 경우와 동일) 한 후이 옵션을 제거하십시오.
krupan

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

jenkins 명령을 사용해보십시오

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

문제가 나타나지 않으면 이제 jenkins는 repo를 연결할 수 있습니다 (최소한 ^^).


1
그룹 권한을 변경하는 위의 명령 (chmod G-rwx ~ / .ssh / id *)이 실패했습니다. 아래는 원하는대로 작동했습니다. chmod g-rwx ~ / .ssh / id *
samaitra


3
  • 오류를 건너 뛰기 위해 기본 sshd_config 속성을 편집하지 않아야합니다.

  • 호스트 확인 실패- known_hosts파일 에서 호스트 이름 항목이 누락되었습니다.

  • 프로세스가 실패한 서버에 로그인하고 다음을 수행하십시오.

    1. 프로세스를 실행하는 사용자에게 Sudo

    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 . 비밀번호없이 로그인해야합니다.

      참고 : 사용자의 .ssh 디렉토리 에서 파일의 기본 권한을 변경하지 마십시오 . 다른 문제가 발생할 수 있습니다


3 단계에서 파일에 이미 키가 있음을 묻는 프롬프트가 표시 될 수 있지만이 4 단계를 계속해야하며 jenkins 사용자의 비밀번호없이 로그인 할 수있는 경우 모든 설정이 완료된 것입니다.
Rakibul Haq

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

가장 좋은 방법은 Jenkinsfile 또는 원하는 곳에서 'https'URL 형식으로 "git url"을 사용하는 것입니다.

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


2

SSH

SSH로 시도하는 경우 여러 가지 이유로 Host key Verification 오류가 발생할 수 있습니다. 다음 단계에 따라 모든 이유를 극복하십시오.

  1. 환경 변수를 HOME 으로 설정하고 주소를 .ssh 폴더 의 루트 디렉토리로 제공하십시오 . 예 :-.ssh가 Name 폴더 안에있는 경우 . C : / 사용자 / 이름
  2. 이제 공개 SSH 키가 저장소 링크에도 제공되고 있는지 확인하십시오. github 또는 bitbucket 또는 기타입니다.
  3. 자식 배쉬를 엽니 다. 그리고 저장소에서 프로젝트를 복제하십시오. 이렇게하면 .ssh 폴더에 자동으로 생성되는 known_host 파일에 리포지토리 URL을 추가하는 데 도움이됩니다.
  4. 이제 젠킨스를 열고 새로운 직업을 만드십시오. 그런 다음 configure를 클릭하십시오.
  5. Git 아래의 소스 코드 관리에서 복제 URL을 제공하십시오. URL은 git@github.com / ......... 또는 ssh : // proje .......로 시작해야합니다.
  6. 신임 정보에서 프로젝트를 복제 할 저장소 양식의 사용자 이름 및 비밀번호를 추가해야합니다. 해당 자격 증명을 선택하십시오.
  7. 이제 구성을 적용하고 저장하십시오.
  8. 빙고! 프로젝트 구축을 시작하십시오. 이제 호스트 키 확인 오류가 발생하지 않기를 바랍니다.

2
  1. "sudo su -s / bin / bash jenkins"를 사용하여 jenkins로 로그인
  2. git clone 키를 발생시키는 원하는 리포지토리
  3. 예 / 아니요 (예 또는 y 입력)를 표시하여 키를 추가하라는 메시지가 표시됩니다.

그게 다야!

이제 jenkins 작업을 다시 실행할 수 있습니다.

문제가 해결되기를 바랍니다.


2

나는이 문제에 부딪 쳤고 jenkins 서비스가 jenkins 사용자로 실행되지 않았다는 것이 문제였습니다. 따라서 jenkins 사용자로 명령을 실행하면 정상적으로 작동했습니다.


1

시험

ssh-keygen -R 호스트 이름

-R hostname known_hosts 파일에서 호스트 이름에 속하는 모든 키를 제거합니다. 이 옵션은 해시 된 호스트를 삭제하는 데 유용합니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.