2012-04-07 2 views
4

ssh를 통해 다른 컴퓨터에 쉘 명령 줄 액세스 권한을 부여하려면 일부 Jenkins 작업이 필요합니다.Jenkins가 ssh를 설정하여 런타임에 사용하기 위해

어떻게하면됩니까?

나는 대상 서버 [S]의 암호가없는,하지만 난 '키'파일을 가지고,하지만 난 쉘 명령과 다음

ssh -i /path/to/key/file [email protected] some_command 

와 함께 작업을 실행할 때, 내가 할 다음과 같습니다 :

ssh_askpass: exec(/usr/bin/ssh-askpass): No such file or directory 

ssh_askpass는 내가 사용하는 GUI 유틸리티 또는 Jenkins 사용자가 액세스 할 수 없습니다.

젠킨스 사용자 (또는 젠킨스가 실행되는 모든 사용자)에게 비밀번호가 없으므로 로그인하여 ~/.ssh/id_dsa 파일을 만들 수 없습니다.

어떻게해야합니까?

감사합니다.

답변

10

키가 유효하지 않거나 키가 암호로 보호되어 있기 때문에 Ssh에서 암호를 묻는 중입니다.

해결해야 할 문제를 찾으려면 동일한 명령을 직접 실행하여 키를 시도하십시오.

키가 암호로 보호되는 경우 Jenkins 작업에서 암호를 입력하는 좋은 방법이 없기 때문에 암호를 제거해야합니다. ssh-keygen -p -f /path/to/key/file으로 할 수 있습니다. 패스 프레이즈를 제거하려면 빈 암호 구문을 설정하십시오.

비대화 형 빌드 작업에서 ssh 명령을 사용할 때는 아마도 -o BatchMode=yes 옵션을 사용해야합니다. 대화 형으로 첫 번째 로그인을 수행하고 호스트 키를 승인 할 수없는 경우가 아니면 -o StrictHostKeyChecking=no을 사용할 수도 있습니다.

+0

이것은 내가 필요한 것입니다. 고맙습니다. ssh -i/path/to/key/file -o BatchMode = yes -o StrictHostKeyChecking = no theuser @ $ SOMEHOST some_command (호스트 이름이 매개 변수화되었습니다.) –

+0

이 셸 명령을 실행하기 위해 Jenkins 작업에서 다음 명령 줄을 사용했습니다. 제 경우에는 git 서버의 신원이 변경됩니다 (예, 이것은 좋지 않지만 서버는 내부적으로 호스팅되므로 IT 담당자가 뭔가를했다고 가정합니다). ANYCASE, 나는 젠킨스 사용자의 신원을 추측해야했고 git 명령을 실행해야했다. 그 시점에서 나는 ssh에게 원격 서버를 받아들이라고 말할 수 있었고 모든 것이 잘되었다. – demaniak

1

"Execute Shell"필드에 명령을 입력하여 원격 시스템으로 직접 ssh를 시도하지 마십시오. 대신 SSH plugin 또는 Publish Over SSH plugin을 사용하십시오. jenkins 사용자에 대한 키를 생성하지 않아도됩니다. 그것은 밖으로 작동합니다.

1

bin 파일 ssh-askpass를 설치하지 않았으므로 해당 파일이나 디렉토리가 없습니다 ... 설치해야했습니다.

리눅스 : sudo apt-get install ssh-askpass

관련 문제