Jenkins에서 scp할 수 없습니다.

Jenkins에서 scp할 수 없습니다.

저는 Jenkins의 새로운 사용자입니다. Jenkins 빌드 단계의 일부로 쉘 스크립트를 실행하려고 합니다. 스크립트에는 파일을 원격 서버로 scp전송 하는 명령이 있습니다..tar

이 스크립트를 실행하면 제대로 작동하고 원하는 출력이 제공되지만 Jenkins를 통해 실행하면 오류가 발생합니다.

Host key verification failed.
lost connection

scp명령이 나올 때까지는 스크립트가 성공적으로 실행된 후 이 scp단계를 건너뜁니다.

Jenkins를 통해 원격 서버로 SSH 또는 SCP를 연결할 수도 없습니다.

여기서 무엇을 할 수 있는지 조언해주세요. ssh그리고 어떤 플러그인을 설치해야 합니까 scp?

답변1

호스트 키는 클라이언트의 "known_hosts" 파일에 추가되어야 합니다. 귀하의 경우에는 jenkins 서버가 실행 중인 계정의 사용자입니다. 그래서 당신이 해야 할 일은 다음과 같습니다:

  1. Jenkins 사용자에 대한 SSH 로그인 활성화
  2. 젠킨스로 로그인
  3. SSH를 통해 원격 서버로
  4. "서버 ID를 추가해야 할까요.."라는 질문에 대답하려면 예..

그러면 끝났습니다. 이후 스크립트는 사용자의 공개 키를 사용하여 scp를 수행할 수 있습니다.

답변2

즉, 해당 사용자로 로그인하려는 서버에 Jenkins의 사용자 SSH 키를 추가해야 합니다.

세부 사항:

Jenkins 서버에 로그인한 후 다음을 수행합니다.

sudo passwd jenkins

Jenkins 사용자에게 원하는 비밀번호를 두 번 입력한 후 다음을 수행하세요.

su jenkins
cd
ssh-keygen

모든 옵션을 보려면 Enter 키를 누르세요. 그런 다음 복사할 서버에 새 SSH 키를 복사합니다.

scp .ssh/id_rsa.pub user@newserver:/home/user/jenkins_key

메시지가 나타나면 예를 눌러 계속하세요.

그런 다음 해당 사용자로 서버에 로그인하고 다음을 수행합니다.

ssh user@server

그리고 비밀번호를 입력하신 후

cd .ssh
ls -lah

"authorized_keys"가 없으면 다음을 수행하십시오.

cd .ssh
touch authorized_keys

"authorized_keys" 파일이 존재하는 경우 위 단계를 무시하고 다음을 수행합니다.

cd
cat jenkins_key >> .ssh/authorized_keys
rm -rf ./jenkins_key

서버를 종료/로그아웃하고 Jenkins 서버로 돌아갑니다.

ssh user@newserver

메시지가 표시되거나 비밀번호를 입력하지 않고 직접 로그인해야 합니다.

이제 Jenkins에서 scp 작업을 다시 실행하세요.

답변3

이 문제를 해결했습니다. 1. jenkins 사용자로 새로운 shh 키 쌍을 만들었습니다. 2. 원격 서버에 .pub 키를 추가합니다. 새로 생성된 개인 키는 jenkins 서버에서 ssh를 실행할 때 사용됩니다. 이제 빌드 단계의 일부로 ssh와 scp를 모두 사용할 수 있습니다. 감사해요

답변4

SSH 에이전트 플러그인

이 플러그인을 사용하면 Jenkins의 ssh-agent를 통해 SSH 자격 증명을 제공하여 빌드할 수 있습니다. https://plugins.jenkins.io/ssh-agent/

이 오류가 다시 표시되면 Jenkins 작업에서 다음 명령을 한 번 실행하세요.

ssh -o StrictHostKeyChecking=no user@host hostname

그런 다음 Jenkins 작업에서 간단히 ssh를 실행할 수 있습니다.

ssh user@host hostname

관련 정보