Jenkins에서 sudo 호출

Jenkins에서 sudo 호출

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

Default requiretty파일에 주석을 달라는 한 가지 해결책을 찾았습니다 /etc/sudoers. 하지만 저는 이 파일에 접근할 수 없습니다.

이 문제를 어떻게 극복할 수 있나요?

답변1

sudo루트 비밀번호를 묻는 메시지를 표시하려고 하는데 가상 tty가 할당되지 않았기 때문에 실패합니다 .

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

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

admin그런 다음 Jenkins 사용자가 그룹(또는 ) 에 속해 있는지 확인하세요 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" 옵션을 확인해야 합니다. 여기에 이미지 설명을 입력하세요

관련 정보