脚本无需 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 &其他一些脚本,并且通常可以完美运行。

注意2:我确实需要,sudo因为我的脚本中还有其他东西需要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

您的 root 用户没有与您不以 root 身份运行时所使用的私钥相同的私钥。因此,作为 root 用户,您无法复制该材料。

尝试复制添加~/.ssh/id_rsa/root/.ssh/id_rsa(或您用于连接的其他一些私钥myip)。

或者让用户sudo执行其他操作,并在执行复制之前显式更改回脚本中的“普通”用户。

相关内容