スクリプトは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_hostssudo ssh root@myipスクリプトを実行する前に対話的に試してください。

または、ホストキー検証を無効にすることもできます。

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

答え2

root ユーザーは root で実行しないときに使用するのと同じ秘密鍵を持っていません。したがって、rootユーザーは素材をコピーできません。

~/.ssh/id_rsa追加の宛先/root/.ssh/id_rsa(または接続に使用した他の秘密鍵)をコピーしてみてくださいmyip

または、ユーザーがsudo別の操作を実行してコピーを実行する前に、スクリプトを明示的に「一般」ユーザーに戻すようにします。

関連情報