scp копирование через ssh не работает - ошибка доступа запрещена, пожалуйста?

83

Это сводит меня с ума! Я просто хочу перенести один простой файл с ноутбука на сервер.

Я использую Ubuntu на обеих машинах.

Так что я:

-rwxr-xr-x 1 sandro    414622 2011-10-14 23:42 sandrophoto-html.tar.gz

И я отправляю это используя:

sudo scp -P XXXX sandrophoto-html.tar.gz usern@server.local:/media/xx/xx/xx

И я получаю: scp: /media/xx/xx/xx/sandrophoto-html.tar.gz: Permission denied

ps я мог бы поступить иначе - я хочу отправить файл tar.gz, который находится на моем рабочем столе, на удаленный сервер в папку / media / yadayda

Эдд
источник
2
В моем случае это была причина безопасности на принимающей стороне, мне пришлось chmod каталог, чтобы позволить удаленному пользователю записать файл (я chmod 777 каталог - но это внутренняя лаборатория)
ilansch

Ответы:

95

У вас все в правильном порядке, насколько я понимаю, общий способ выполнения scp:

scp sourceuser@sourcehost:/path/to/source/file destinationuser@destinationhost:/path/to/destination/

Судя по вашему вопросу, у вас есть локальный файл, который вы хотите отправить на целевой сервер. Таким образом, у вас есть правильный синтаксис, который хорош!

Если вам отказано в разрешении, значит, вы не используете правильное имя пользователя или что-то не так с аутентификацией. Скорее всего, это потому, что команда sudo работает только локально, для начала, поэтому она не даст вам root на удаленном компьютере, так что это, вероятно, проблема. Убедитесь, что пользователь, на котором вы входите как на удаленном сервере, имеет права на запись в папку, в которую вы пытаетесь записать.

Если проблема заключается в том, что конечный пользователь не имеет доступа к этому местоположению без sudo, переместите файл в домашнюю папку конечного пользователя, а затем sudo mv файл из оболочки на другом сервере, чтобы поместить его в нужное место.

Анна
источник
9
Спасибо, мне пришлось добавить разрешение на запись в каталог назначения
PiKey
@PiKey Это должен быть ответ
Code-Guru
39

Привет, эта проблема с разрешением была решена таким образом

Убедитесь , что каталог , который вы копируете ON 192.168.0.4принадлежит пользовательскому имени пользователя

chown username downloads

На твоей локальной машине потом делай

sudo scp filename.zip username@192.168.0.4:/etc/Myfiles/downloads

ура

mainakibui
источник
THX, был разрешения, в частности, здесь я должен был использовать chmodв папке назначения на удаленном сервере
Aquarius Power
26

Permisssion Denied означает, что вы не являетесь корнем сервера. Вы просто держите аккаунт там. Так что в этом случае вам нужно сделать это:

sudo scp -r /path2yourFolder/ username@server_Ip:/home/username

Это скопирует в ваш домашний каталог на сервере.

Это также будет работать:

scp -r /path2yourFolder/ username@server_Ip:~/
Абхишек Каушик
источник
2
спасатель! : ~ / сделал это для меня.
trdavidson
~/это действительно путь, -rдля рекурсивного копирования всего каталога.
Ноам Манос
9

Эта ошибка произошла для меня, когда файл уже существовал в целевом расположении, а существующий файл имел разрешения только для чтения (предотвращая перезапись файла). В моем случае я только что вошел и удалил существующий файл, и это исправило проблему.

Kevin
источник
7

У меня была похожая проблема, это произошло потому, что sshпринимает -p xxxxдля указания порта, в то время как scpпринимает -P xxxxдля указания порта. Незначительное несоответствие, так легко пропустить :(

кортик
источник
Хвала вам. Не обращайте на меня внимания, если я добавлю пару ключевых слов с поддержкой Google, чтобы сделать это более заметным:scp doesn't work Permission denied (publickey). lost connection for ec2 compute.amazonaws.com
user1717828
0

Была такая же проблема. Я обнаружил, что каталог, содержащий мой исходный файл, не имеет достаточных разрешений. Поэтому я просто рекурсивно изменил режим, используя: chmod -R 771 directory_pathна исходном компьютере.

Changba
источник
0

Я пытался скопировать с моей локальной машины как username@localhost; ключ SSH, который я использовал, не был зарегистрирован для доступа к моему локальному хосту, поэтому мне было отказано в разрешении. Когда я удалил это из исходной части, это сработало.

Хаим Элия
источник