mussh가 존재하지 않으며 Askpass 프로그램이 지정되지 않았습니다.

mussh가 존재하지 않으며 Askpass 프로그램이 지정되지 않았습니다.

MUSSH를 사용하여 원격 시스템에서 bash 스크립트 실행

$ mussh -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2
sudo: unable to resolve host hostname
[email protected]: sudo: no tty present and no askpass program specified

머신 중 하나에 직접 SSH를 통해 스크립트를 실행하면 모든 것이 잘 작동합니다.

답변1

mussh값이 있는 옵션을 사용하여 터미널을 할당해야 한다는 요구 사항을 알릴 수 있습니다 ssh. 예를 들어 다음과 같습니다.-oRequestTTY

mussh -o RequestTTY=yes -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2

직접 사용 하는 경우 해당 옵션을 ssh사용할 수 있지만 다른 목적 으로 사용할 수 있습니다.-tmussh-t저것도착하다 ssh):

-t
의사 tty 할당을 강제합니다. 이는 원격 컴퓨터에서 임의의 화면 기반 프로그램을 실행하는 데 사용할 수 있으며, 이는 예를 들어 메뉴 서비스를 구현할 때 유용합니다. -t ssh에 로컬 tty가 없더라도 여러 옵션이 tty 할당을 강제합니다.

RequestTTY
세션에 대한 의사 터미널을 요청할지 여부를 지정합니다. 매개변수는 다음 중 하나일 수 있습니다.no(TTY를 요청하지 마십시오),yes (표준 입력이 TTY일 경우 항상 TTY가 요청됩니다.)force (항상 TTY를 요청하세요) 또는auto(로그인 세션을 열 때 TTY가 요청됩니다.) 이 옵션은 미러링 -t-T플래그 지정 SSH(1).

추가 자료:

답변2

좋아, 문제를 해결했습니다! (퇴근 후 싸운 후)

전체 작업 코드는 다음과 같습니다.[https://github.com/aurelien-git/MAS]

해결책은 RequestTTY를 사용하지 않는 것입니다.

하지만 /root/.ssh/authorized_keys에 Authorized_keys가 있어야 합니다.

이제 명령을 정상적으로 로드할 수 있습니다.

mussh -a -i /home/aurelien/.ssh/id_rsa -d -H mas-hostfile -C 'update.sh' -m2

그리고 더 ;-)

관련 정보