Я работаю над сценарием, которому нужно скопировать некоторые файлы с локального компьютера в каталог на удаленном сервере. Проблема, с которой я сталкиваюсь, заключается в том, что каталог (/etc/init.d) принадлежит пользователю root, поэтому я получаю исключения из разрешений, если пытаюсь скопировать в него файлы. Это означает, что я не могу использовать scp, не войдя в систему как пользователь root.
Самое близкое решение, которое я нашел до сих пор, это этот ответ: https://askubuntu.com/a/872537/798391 . К сожалению, данный ответ не совсем работает, и ни одно из предложений, приведенных в комментариях, похоже, не исправляет его. Если я побегу
кот myscript.sh | ssh foo@myserver "sudo tee -a /etc/init.d/myscript.sh"
я получаю ошибку
sudo: нет tty и не указана программа askpass
В одном из комментариев предлагалось добавить -t к команде ssh.
кот myscript.sh | ssh -t foo@myserver "sudo tee -a /etc/init.d/myscript.sh"
но это привело к ошибке
Псевдотерминал не будет выделен, потому что stdin не является терминалом.
Другим предложенным вариантом было использование аргумента -S команды sudo.
кот myscript.sh | ssh foo@myserver "sudo -S tee -a /etc/init.d/myscript.sh"
Это, по крайней мере, запрашивает пароль, но время ожидания истекает, и он запрашивает снова, прежде чем пароль можно будет ввести полностью.
На данный момент у меня нет идей.Есть ли способ заставить эту команду работать? Есть ли лучшее альтернативное решение для копирования файлов в защищенное удаленное место?