원격 서버에 tty가 존재하지 않으며 Askpass 프로그램이 지정되지 않았습니다.

원격 서버에 tty가 존재하지 않으며 Askpass 프로그램이 지정되지 않았습니다.

SSH를 사용하여 원격 서버에서 스크립트를 실행하려고 하면 "tty가 존재하지 않으며 Askpass 프로그램이 지정되지 않았습니다" 오류가 발생합니다.

오류가 발생하는 주요 명령줄은 다음과 같습니다.

sudo /usr/sbin/userdel $user_id

내 명령줄에서 수정해야 할 사항을 제안해 주세요.

참고: 원격 서버에서는 sudoers 파일을 수정할 수 없습니다.

답변1

스크립트를 실행하려면 원격 측에 tty(터미널)를 할당하도록 ssh해당 옵션을 전달해야 합니다 .-t

비밀번호 프롬프트가 필요한 명령(예: sudo)에는 터미널이 필요하므로 입력할 때 비밀번호가 표시되지 않도록 입력한 문자가 출력되지 않도록 하는 등 터미널 I/O를 제어할 수 있습니다.

ssh $hostSSH 클라이언트는 실행할 때 (명령을 사용하지 않고) 자동으로 터미널을 할당하지만(따라서 필요하지 않음 -t), 다음과 같은 명령으로 실행하면 ssh $host /path/to/script대부분의 명령에 대해 터미널이 아니요이기 때문에 터미널을 할당하지 않습니다. 표준 파일 설명자(stdin, stdout, stderr)를 리디렉션하는 것만으로도 충분합니다. 이 -t옵션은 해당 동작을 변경하고 명령줄을 전달하더라도 터미널을 할당합니다.

문서 보기-t 옵션SSH 매뉴얼 페이지에서. 해당 페이지에서 pty 또는 의사 터미널에 대한 다른 참조를 찾으십시오. (그런데 터미널이 키보드/모니터 또는 직렬 포트와 같은 실제 장치에 연결되어 있지 않기 때문에 tty 대신 pty/의사 터미널이라고 부릅니다. 이러한 목적은 거의 같은 의미를 갖습니다.)

관련 정보