ssh 및 sudo: stdin을 처리하는 ssh 스크립트에서 sudo 비밀번호를 요청하는 방법

ssh 및 sudo: stdin을 처리하는 ssh 스크립트에서 sudo 비밀번호를 요청하는 방법

호스트의 표준 입력을 처리하는 SSH를 통해 원격 호스트에서 실행되는 스크립트가 있습니다.

스크립트는 비슷한 작업을 수행합니다(단순화를 위해).

cat $TARBALL | ssh $REMOTE 'tar -x -C -f - && reboot'

SSH 사용자로 루트를 사용하면 제대로 작동하지만 원격에 루트 액세스 권한이 없으면 sudo를 사용하여 명령을 실행하고 싶습니다. 예를 들면 다음과 같습니다.

cat $TARBALL | ssh $REMOTE 'sudo tar -x -C -f - && sudo reboot'

여기에서 사용자에게 대화형으로 비밀번호를 묻고 싶지만 이 경우 sudo는 비밀번호를 얻을 수 없습니다.

로컬 터미널에서 비밀번호를 요청하도록 sudo에 어떻게 지시할 수 있나요? -A 옵션을 사용하면 이 기능이 활성화되는 것 같지만 이 경우 어떤 Askpass 프로그램이 필요할지 알 수 없습니다.

답변1

표준 입력에서 암호 프롬프트를 처리해야 할 때 권장되는 Unix 접근 방식은 expect(1)이 목적을 위해 특별히 제작된 도구를 사용하는 것입니다.

관련 정보