Судя по вашему вопросу, у вас есть локальный файл, который вы хотите отправить на целевой сервер. Итак, у вас есть правильный синтаксис, и это хорошо!
Если вам отказано в разрешении, значит, вы используете неправильное имя пользователя или что-то не так с аутентификацией. Скорее всего, это связано с тем, что команда sudo работает только локально, для начала, поэтому она не даст вам root на удаленном компьютере, так что, вероятно, в этом и заключается проблема. Убедитесь, что пользователь, от имени которого вы входите в систему на удаленном сервере, имеет права на запись в папку, в которую вы пытаетесь выполнить запись.
Если проблема в том, что destinationuser не имеет доступа к этому местоположению без sudo, переместите файл в домашнюю папку destinationuser, затем sudo извлекает файл из командной строки на другом сервере, чтобы поместить его в нужное место.
У меня была похожая проблема, это произошло потому, что ssh принимает -p xxxx для указания порта во время scp принимает -P xxxx чтобы указать порт. Незначительное несоответствие, которое так легко пропустить:(
Эта ошибка возникла у меня, когда файл уже существовал в целевом расположении, а существующий файл имел разрешения только для чтения (предотвращая перезапись файла). В моем случае я просто вошел в систему и удалил существующий файл, и это исправило проблему.
Я пытался скопировать со своего локального компьютера как username@localhost; SSH-ключ, который я использовал, не был зарегистрирован для доступа к моему локальному хосту, поэтому мне было отказано в разрешении. Когда я удалил это из источник порция, это сработало.
У меня была та же проблема. Я обнаружил, что каталог, содержащий мой источник файл не имел достаточного разрешения. Поэтому я просто изменил режим рекурсивно, используя:chmod -R 771 directory_path на исходном компьютере.
В моем случае это было из соображений безопасности на принимающей стороне, мне пришлось изменить каталог, чтобы разрешить удаленному пользователю записывать файл (я изменил каталог 777, но это внутренняя лаборатория)