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
. 예를 들어 다음과 같습니다.-o
RequestTTY
mussh -o RequestTTY=yes -a -i ~/.ssh/id_rsa -d -H mas-hostfile -c 'bash script.sh' -m2
직접 사용 하는 경우 해당 옵션을 ssh
사용할 수 있지만 다른 목적 으로 사용할 수 있습니다.-t
mussh
-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
그리고 더 ;-)