tty(-t) 없이 스크립트에서 ssh를 통해 원격 호스트에서 실행할 때 sudo가 중단됩니다.

tty(-t) 없이 스크립트에서 ssh를 통해 원격 호스트에서 실행할 때 sudo가 중단됩니다.

AIX 6.1 서버가 있고 sudobash 스크립트에서 원격 명령을 실행해야 합니다.

내 bash 스크립트를 단순화하면 다음과 같습니다.

TestSudo.sh

#!/usr/bin/bash
set -x

sudo env

sudo비밀번호 없이 로컬에서 명령을 실행할 수 있습니다 .

[user@server]$ sudo env
VAR=VAL
...

스크립트를 로컬에서 실행할 수 있습니다.

[user@server]$ /tmp/testSudo.sh
+ sudo env
VAR=VAL
...

sudo원격 호스트에서 실행할 수 있습니다 .

[user@client]$ ssh user@server sudo env
VAR=VAL
...

tty를 사용하여 원격 호스트에서 스크립트를 실행할 수 있습니다.

[user@client]$ ssh -t user@server /tmp/testSudo.sh
+ sudo env
VAR=VAL
...

tty가 없으면 원격 호스트에서 스크립트를 실행할 수 없습니다(그리고 컨텍스트에 -t 옵션을 추가할 수도 없습니다).

[user@client]$ ssh user@server /tmp/testSudo.sh
+ sudo env

거기에 걸려 있어요.

답변1

터미널 없이 실행되는 경우 Sudo는 비밀번호 쿼리를 처리하기 위해 도우미가 필요합니다.

SUDO_ASKPASS    Specifies the path to a helper program used to read the
password if no terminal is available or if the -A option is specified.

일반적으로 ssh 및 sudo를 통해 연결할 때 비밀번호를 입력해야 하지만 터미널이 할당되지 않고 오류가 보고됩니다. AIX에서는 다를 수 있습니다.

sudo 설정을 확인하고 모든 원격 시스템에서 NOPASSWD를 활성화하십시오. 올바른 규칙은 다음과 같습니다(/etc/sudoers 끝에 추가).

user ALL= NOPASSWD:/tmp/testSudo.sh

관련 정보