스크립트는 sudo 없이 실행되지만 sudo에서는 실패합니다.

스크립트는 sudo 없이 실행되지만 sudo에서는 실패합니다.

이 스크립트를 시작하면:

#!/bin/bash -v
sshpass -p '<pypasswd>' scp blah.img root@myip:/home/user/blah.img
exit 0

그리고

./script.sh

또는

nohup ./script.sh &

효과가있다.

하지만 내가 할 때

nohup sudo ./script.sh &

실패했습니다(아무 것도 업로드되지 않았고, 재현할 수 없는 인증 오류가 발생한 적이 있습니다).왜?


참고: 저는 일반적으로 nohup sudo ./script.sh &다른 스크립트에 이것을 사용하며 일반적으로 완벽하게 작동합니다.

sudo참고 2: 스크립트에 sudo가 필요한 다른 항목이 있기 때문에 이것이 필요합니다 .

답변1

myip거기에는 기록 이 없는 것 같아요 /root/.ssh/known_hosts. sudo ssh root@myip스크립트를 실행하기 전에 대화형으로 시도해 보십시오 .

또는 호스트 키 확인을 비활성화할 수 있습니다.

#!/bin/bash -v
sshpass -p '<pypasswd>' scp -o StrictHostKeyChecking=no blah.img root@myip:/home/user/blah.img
exit 0

답변2

루트 사용자는 루트로 실행하지 않을 때 사용하는 것과 동일한 개인 키를 가지고 있지 않습니다. 따라서 루트 사용자는 자료를 복사할 수 없습니다.

~/.ssh/id_rsa추가 대상 /root/.ssh/id_rsa(또는 연결하는 데 사용한 다른 개인 키 )을 복사해 보세요 myip.

또는 사용자가 sudo다른 작업을 수행하고 복사를 수행하기 전에 스크립트에서 명시적으로 "일반" 사용자로 다시 변경하도록 합니다.

관련 정보