저는 Jenkins의 새로운 사용자입니다. Jenkins 빌드 단계의 일부로 쉘 스크립트를 실행하려고 합니다. 스크립트에는 파일을 원격 서버로 scp
전송 하는 명령이 있습니다..tar
이 스크립트를 실행하면 제대로 작동하고 원하는 출력이 제공되지만 Jenkins를 통해 실행하면 오류가 발생합니다.
Host key verification failed.
lost connection
이 scp
명령이 나올 때까지는 스크립트가 성공적으로 실행된 후 이 scp
단계를 건너뜁니다.
Jenkins를 통해 원격 서버로 SSH 또는 SCP를 연결할 수도 없습니다.
여기서 무엇을 할 수 있는지 조언해주세요. ssh
그리고 어떤 플러그인을 설치해야 합니까 scp
?
답변1
호스트 키는 클라이언트의 "known_hosts" 파일에 추가되어야 합니다. 귀하의 경우에는 jenkins 서버가 실행 중인 계정의 사용자입니다. 그래서 당신이 해야 할 일은 다음과 같습니다:
- Jenkins 사용자에 대한 SSH 로그인 활성화
- 젠킨스로 로그인
- SSH를 통해 원격 서버로
- "서버 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