sudo 명령을 실행하기 위해 원격 서버에 비밀번호를 안전하게 전달하는 방법

sudo 명령을 실행하기 위해 원격 서버에 비밀번호를 안전하게 전달하는 방법

원격 서버에서 sudo 명령을 실행하는 명령으로 끝나는 긴 bash 스크립트가 있습니다.

10 hours of local processing
ssh user@ip "sudo ls"

서버에 연결하기 위해 SSH 키를 설정했는데 작동하지만 sudo 명령을 실행하기에는 충분하지 않습니다. 또한 이 명령은 스크립트 끝에 있으므로 sudo 비밀번호에 대한 대화형 프롬프트를 기다리고 싶지 않습니다. 이상적으로는 스크립트 시작 부분에서 비밀번호를 묻는 메시지를 표시하고 이 비밀번호를 변수에 저장한 다음 이 변수를 ssh 명령에 전달하여 원격 서버에서 sudo 명령을 실행하고 싶습니다.

이것이 내가 붙어있는 곳입니다. 나는 이것에 관한 수많은 기사를 읽었지만 그 중 절반은 이것을 사용하도록 제안했습니다.

ssh $HOST 'echo $PASSWORD | sudo -S $COMMMAND'

이는 내 비밀번호를 노출시키기 때문에 위험하며 그 중 절반은 원격 서버에서 sudo 명령을 비활성화하여 비밀번호를 요구하지 않도록 제안합니다.

이것이 실제로 유일한 두 가지 솔루션입니까?

답변1

시작 시 추가할 수 sudo --validate있으며 시작 시 비밀번호를 묻고 15분 동안 캐시(기본값)합니다.

편집하고 /etc/sudoers예외(비밀번호 없이 실행할 수 있는 명령)를 추가할 수 있습니다. (적절하지 않을 수도 있습니다.)

전체 프로세스를 루트로 실행한 다음 권한을 삭제하고 하위 쉘을 실행할 수 있으며, 루트 쉘은 해당 작업을 수행하기 전에 하위 쉘이 완료될 때까지 기다립니다.

루트로 연결할 수 있도록 루트의 SSH 키를 추가하세요.

관련 정보