Jenkins에서 sudo 호출하기

Jenkins에서 sudo 호출하기

abcsudo 액세스가 제한된 사용자가 있는 빌드 시스템이 있습니다 . 소스 코드를 확인하고 빌드 스크립트를 실행하면 정상적으로 작동합니다. 빌드 스크립트에 sudo지정되지 않은 호출 "sudo: tty가 존재하지 않으며 Askpass 프로그램이 지정되지 않았습니다"가 포함되어 있습니다. 그러나 슬레이브로 추가된 빌드 머신에서 Jenkins로 동일한 작업을 수행하면 "sudo: tty가 존재하지 않으며 Askpass 프로그램이 지정되지 않았습니다"라는 메시지가 나타납니다.

Default requiretty파일에서 주석 처리하라는 솔루션을 찾았습니다 /etc/sudoers. 하지만 파일에 접근할 수 없습니다.

이 문제를 어떻게 극복할 수 있습니까?

답변1

sudo루트 비밀번호를 묻는 메시지를 표시하려고 시도했지만 의사 tty가 할당되지 않았기 때문에 실패했습니다 .

/etc/sudoers 루트로 로그인하거나 (or:)에서 다음 규칙을 설정해야 합니다 sudo visudo.

# Members of the admin group may gain root privileges.
%admin  ALL=(ALL) NOPASSWD:ALL

그런 다음 Jenkins 사용자가 admin그룹(또는 wheel)에 속해 있는지 확인하세요.

이상적으로(더 안전하게) 루트 권한을 다음과 같이 지정할 수 있는 특정 명령으로 제한합니다.%admin ALL=(ALL) NOPASSWD:/path/to/program

답변2

두 가지 옵션이 있습니다. 언급한 대로 Defaults requiretty/etc/sudoers의 설정을 주석 처리하거나 pseudo-tty 할당( -t) 매개변수를 사용하는 것입니다 ssh.

Jenkins 스크립트에서 다음을 시도해 보세요.

ssh -t 127.0.0.1 "sudo command"

알려진 호스트에 항목을 추가 하려면 ssh사전 공유 키를 직접 구성하고 수동으로 한 번 실행해야 하지만 매개변수를 추가하여 이를 무시할 수도 -o StrictHostKeyChecking=no있습니다 ssh.

답변3

이를 수행하는 쉬운 방법
여기에 이미지 설명을 입력하세요.

$ sudo visudo
## Now add the below lines in your sudoers file :
jenkins ALL=(ALL) NOPASSWD: ALL

$service jenkins start

답변4

SSH를 통해 명령을 실행하는 경우 "Exec in pty" 옵션을 확인해야 합니다. 여기에 이미지 설명을 입력하세요.

관련 정보