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-user에 대해 SSH 로그인을 활성화합니다.
  2. 젠킨스로 로그인
  3. SSH를 통해 원격 서버에 접속
  4. "서버 ID를 추가해야 합니까.."라는 질문에 예라고 대답합니다..

그러면 끝났습니다. 그 후 스크립트는 사용자 pubkey를 사용하여 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

관련 정보