sudo: no tty present and no askpass program specified ( Jenkins / Linux )
🌜 Server/Jenkins

sudo: no tty present and no askpass program specified ( Jenkins / Linux )

728x90

안녕하세요. 그린주입니다 ๑'ٮ'๑

오늘도 힘차게 시작해보겠습니다!

 

개요

이번 글에서는 sudo: no tty present and no askpass program specified 오류 처리 방법을 공유하고자 합니다.


목차

sudo 설명

문제 상황

문제 확인

문제 해결


sudo 설명

1. sudo란 무엇인가?

sudo 명령어는 일반 사용자가 sudo 명령어로 통해서 일시적으로 root의 권한을 획득하여 해당 명령어를 처리합니다.

 

2. sudo를 사용하는 이유는?

root로 사용하면 되는데 sudo를 사용하는 이유는 일반 유저가 root의 패스워드를 알 필요가 없기 때문입니다. root의 권한이 필요할 때에는 이러한 방식으로 사용하는 것이 보안 쪽으로도 안전합니다.


문제 상황

Jenkins Execute Shell에서 sudo로 실행 시 아래와 같이 오류가 발생합니다.

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

sudo: no tty present and no askpass program specified
Build step 'Execute shell' marked build as failure
Finished: FAILURE

문제 확인

Jenkins_User에게 sudo 명령어 실행 권한이 없기 때문에 발생한 문제입니다.


문제 해결

이 문제는 sudo를 사용 안 하는 방법과 Jenkins_User에게 권한을 주어 문제를 해결할 수 있습니다.

저는 Jenkins_User에 권한과 sudo 명령어 실행 시 패스워드를 묻지 않도록 하여 오류를 해결해 보겠습니다.

 

아래 설정 파일로 들어가 권한을 추가합니다.

  여기서 "jenkins"는 기본값이므로 Jenkins에서 User를 수정했다면 수정한 User로 입력해야 합니다.

// 설정파일
$ sudo vi /etc/sudoers

// 추가 할 내용
## Allow root to run any commands anywhere
root	ALL=(ALL)	ALL
jenkins	ALL=(ALL) NOPASSWD: ALL

이렇게  "jenkins"에 권한을 주면 오류 없이 sudo를 사용할 수 있게 됩니다.


마무리

이렇게 sudo: no tty present and no askpass program specified 오류 처리 방법에 대해 적어보았습니다.

다들 성공하셨을까요?? 끝까지 파이팅입니다!

 

긴 글 봐주셔서 감사합니다!

오늘도 행복한 하루 보내세요 '◡'✿


참고

[Jenkins] sudo: no tty present and no askpass program specified

[Linux] We trust you have received the usual lecture from the local SystemAdministrator 오류 조치


728x90
728x90