ssh를 통한 sudo : tty 없음 및 askpass 프로그램 없음


15

나는이 오류가 계속 발생 하고이 문제를 해결하기 위해 온라인으로 논의 된 여러 가지 방법을 시도했지만 아무도 나를 위해 일하지 않습니다. 내가 실행할 때 그래서 나는 설정 SSH 키가 'ssh newton@host.com'이를 자동으로 저를 기록 나는 또한이 사용자 설정, visudo할 수 'newton ALL=(ALL:ALL) ALL' 그때도 추가로 시도를'newton ALL=NOPASSWD: /var/www/script.sh'

불행히도 ssh newton@host.com 'sudo /var/www/script.sh'Cygwin에서 도망 칠 때마다 돌아옵니다. 또한 추가하려고했지만 -t -t암호를 묻는 메시지가 표시됩니다.

total size is 21209180  speedup is 314.69
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: no tty present and no askpass program specified
Sorry, try again.
sudo: 3 incorrect password attempts

이것은 Cygwin에만 국한되지 않습니다. ssh example.com sudo echo hello한 Linux 시스템에서 다른 Linux 시스템으로 동일한 문제를 사용 하고 있습니다. 그에 따라 제목이 업데이트되었습니다. 또한 유닉스 사이트로의 마이그레이션에 대한 귀하의 질문을 표시했습니다.
Keith Thompson

답변:


10

sudo암호를 묻는 프롬프트를 표시하려면 터미널을 실행 해야합니다. 에 명령을 전달하면 명령 ssh이 터미널을 필요로하지 않고 전달하지 않는 한 터미널을 만들지 않는 것으로 가정합니다 -t. 자세한 설명 은 "stdin : is a tty"와 함께 SSH 내부의 SSH 실패를 참조하십시오 .

로도 비밀번호를 입력 할 수없는 경우 -tWindows에 문제가있을 수 있습니다. Windows 콘솔은 유닉스 터미널을 완전히 에뮬레이트하지 않습니다. 이러한 상황에서 Cygwin 애플리케이션이 터미널을 올바르게 에뮬레이트하는 데 약간의 어려움이있을 수 있습니다 (확실하지 않습니다. 참고). 이것이 문제라면 Console2 또는 Mintty (Cygwin 배포판에 포함) ssh와 같은 터미널 에뮬레이터 내 에서 실행 하십시오 . Windows 7에서 Cygwin과 함께 쉘을 사용하는 가장 좋은 방법을 참조하십시오 .

SSH 암호문이 sudo 로의 인증을 위해 비밀번호를 대체 할 것으로 예상 한 경우에는 발생하지 않습니다. Sudo에는 비밀번호가 필요합니다 ( NOPASSWDsudoers 파일에 태그 를 추가하지 않는 한 ). 옵션이 sudoers 파일에 설정되어있는 NOPASSWD경우 에도를 사용하여 터미널이 있어야 requiretty합니다.

루트 계정에 비밀번호없이 로그인하려면 (일반적으로 보안 측면에서 좋지 않은 경우) SSH를 사용하여 루트 계정에 도달하십시오 (2 회 홉). 페이지의 "표준 입력 : 청각 장애 아니다"SSH 내부 SSH는 실패 (에 root@host.com대한 otheruser@computertwo.com).


3

nodejs 명령 / 이진에 암호를 사용하지 않도록 설정하십시오.

Visudo 수정

sudo visudo

명령에 암호를 사용하지 않으려면 다음 줄을 사용하십시오. 패스는 각 명령 뒤에 쉼표와 공백이있는 여러 명령입니다.

<user name> ALL = NOPASSWD: /usr/local/bin/node

전의. sunthara ALL = NOPASSWD: /usr/local/bin/node

여기에 이미지 설명을 입력하십시오


1

ssh-server 구성 파일을 편집하고 맨 아래에 추가하십시오.

root# vim /etc/ssh/sshd_config

Match User newton
    PermitTTY yes

작동하지 않습니다 : service sshd restart=>/etc/ssh/sshd_config: line 91: Bad configuration option: User
kiltek

다음으로 변경해야 할 수도 있습니다Match User newton
ILMostro_7

1
아니요 User, 구성 옵션이 없기 때문에 sshd 파일에 쓸 수 없습니다. (최소한의 경우는 내 시스템 우분투 16.04의 경우)
kiltek

맨 페이지에서 : "일치 조건부 블록을 소개합니다. 일치 줄의 모든 기준이 충족되면 다음 줄의 키워드가 다른 일치 줄 또는 끝까지 구성 파일의 전역 섹션에 설정된 키워드보다 우선합니다. 일치하는 인수는 하나 이상의 기준 패턴 쌍이며 사용 가능한 기준은 사용자, 그룹, 호스트 및 주소입니다. 일치 패턴은 단일 항목 또는 쉼표로 구분 된 목록으로 구성 될 수 있으며 와일드 카드 및 부정을 사용할 수 있습니다. ssh_config (5)의 PATTERNS 섹션에 설명 된 연산자
ILMostro_7

Match당신의 대답에 블록을 볼 수 없습니다 ...
kiltek

0

/ etc / sudoers에서 실수했을 때이 오류가 발생했습니다. 이와 같은 여러 명령을 지정하는 대신 :

NOPASSWD= /bin/x, /bin/y

나는 다음과 같이 저장했다 :

NOPASSWD= /bin/x /bin/y

즉, 쉼표없이. 이제 시도 할 때 tty 선물없습니다.

ssh host 'sudo x'

0

관련이 있는지 모르겠지만 sudoers 파일에 '... NOPASSWD : /xyz/script.shl' #!/bin/shellname/xyz/script.shl있으면 파일 맨 위에 줄을 포함시킬 때까지 해당 오류 메시지가 나타납니다 .


0

/ etc / sudoers 파일에서 아래 매개 변수를 주석 처리하면 도움이되었습니다.

# Disable "ssh hostname sudo <cmd>", because it will show the password in clear.
#         You have to run "ssh -t hostname sudo <cmd>".
#
Defaults    requiretty

#
# Refuse to run if unable to disable echo on the tty. This setting should also be
# changed in order to be able to use sudo without a tty. See requiretty above.
#
Defaults   !visiblepw

---> 다음과 같이 매개 변수를 주석 처리하십시오.

#Defaults    requiretty
#Defaults   !visiblepw
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.