Скрипт работает без 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.

  • Как я могу заставить sudo отказаться от всех переменных среды?
  • `root` vs` sudo` от ulimit POV
  • Почему я могу переключиться на пользователя, но не запускать сценарий, поскольку он
  • Скрипт для su-c на экран не работает как предполагалось
  • Почему sudo не запрашивает пароль снова после того, как «команда не найдена»?
  • su или sudo - как узнать, какой из них будет работать?
  • Как изменить оболочки через скрипт?
  • sudo: «эффективный uid не равен 0, sudo установлен setuid root?» на малине Pi
  • 2 Solutions collect form web for “Скрипт работает без sudo, не работает с sudo”

    Я подозреваю, что 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 

    У вашего пользователя root нет одинаковых секретных ключей, которые вы используете, если они не выполняются как root. Поэтому, как root, вы не можете копировать материал.

    Попробуйте скопировать добавление ~/.ssh/id_rsa в /root/.ssh/id_rsa (или какой-либо другой секретный ключ, который вы используете для подключения к myip ).

    В качестве альтернативы, пусть sudo выполняет другие действия и автоматически переходит к «нормальному» пользователю в сценарии, прежде чем делать копию.

    Linux и Unix - лучшая ОС в мире.