SSH를 사용하여 원격 서버에서 스크립트를 실행하려고 하면 "tty가 존재하지 않으며 Askpass 프로그램이 지정되지 않았습니다" 오류가 발생합니다.
오류가 발생하는 주요 명령줄은 다음과 같습니다.
sudo /usr/sbin/userdel $user_id
내 명령줄에서 수정해야 할 사항을 제안해 주세요.
참고: 원격 서버에서는 sudoers 파일을 수정할 수 없습니다.
답변1
스크립트를 실행하려면 원격 측에 tty(터미널)를 할당하도록 ssh
해당 옵션을 전달해야 합니다 .-t
비밀번호 프롬프트가 필요한 명령(예: sudo
)에는 터미널이 필요하므로 입력할 때 비밀번호가 표시되지 않도록 입력한 문자가 출력되지 않도록 하는 등 터미널 I/O를 제어할 수 있습니다.
ssh $host
SSH 클라이언트는 실행할 때 (명령을 사용하지 않고) 자동으로 터미널을 할당하지만(따라서 필요하지 않음 -t
), 다음과 같은 명령으로 실행하면 ssh $host /path/to/script
대부분의 명령에 대해 터미널이 아니요이기 때문에 터미널을 할당하지 않습니다. 표준 파일 설명자(stdin, stdout, stderr)를 리디렉션하는 것만으로도 충분합니다. 이 -t
옵션은 해당 동작을 변경하고 명령줄을 전달하더라도 터미널을 할당합니다.
문서 보기-t 옵션SSH 매뉴얼 페이지에서. 해당 페이지에서 pty 또는 의사 터미널에 대한 다른 참조를 찾으십시오. (그런데 터미널이 키보드/모니터 또는 직렬 포트와 같은 실제 장치에 연결되어 있지 않기 때문에 tty 대신 pty/의사 터미널이라고 부릅니다. 이러한 목적은 거의 같은 의미를 갖습니다.)