SCP Permission Denied: Why It Except and How To Fix It
SCP — это инструмент с открытым исходным кодом для передачи файлов по SSH. Его можно использовать в Linux и других поддерживаемых операционных системах для передачи файлов через SSH. Он может использоваться для передачи файлов между двумя хостами с использованием SSH-соединения.

может случиться ошибка «доступ запрещен» В SCP по нескольким причинам, например: Неправильно определенные маршруты Или Ошибка при написании разрешения.Мы рассмотрим некоторые причины, приводящие к этой ошибке, и способы ее исправления.
Причина: Отсутствие прав на запись.
Одна из причин возникновения этой ошибки заключается в том, что У вашего пользователя нет прав на запись. Для проверки прав доступа к конкретной директории на хосте, куда вы пытаетесь записать файлы, вы можете... Используя команду 'ls -l'Это отобразит права на запись.

Найдите букву 'w'. В пределах первых четырех символов в первом столбце вывода. Если вы это видите, это означает, что У вашего пользователя есть права на запись. Таким образом, каталог. В качестве альтернативы вы всегда можете создать файл в этом каталоге с помощью команды touch. Если вы не получаете никаких ошибок, таких как «отказано в доступе», это означает, что у вашего пользователя есть права на запись.
Пример:
Предположим, вы хотите скопировать файл на удаленный хост с помощью SCP, и получаете ошибку «отказано в доступе» из-за проблем с правами на запись.
scp abcd.txt user@127.0.0.1:/home/abcduser/abcd.txt
Решение 1: Используйте учетную запись root для передачи файлов.
Для исправления подобной ошибки, Вам необходимо предоставить разрешение на написание текста. Для доступа к этому каталогу пользователю необходимы права root или sudo. Другой вариант — скопировать файл в каталог, где у пользователя есть права на запись.
В подобной ситуации вам либо нужно предоставить текущему пользователю права на запись в каталог /home/abcduser, либо использовать учетную запись root для копирования этого файла.
Чтобы разрешить пользователю root копировать файл с помощью scp, необходимо разрешить вход root через SSH, что не рекомендуется по соображениям безопасности, но в подобных сценариях его можно использовать и после завершения процесса.
Для этого откройте Конфигурационный файл OpenSH находится по адресу /etc/ssh/sshd_config وУдалите комментарий о PermitRootLogin В текстовом редакторе на удаленном хосте.

Далее подключитесь к удалённому хосту, используя его учетную запись root.
Затем выполните команду следующим образом:
scp abcd.txt root@127.0.0.1:/abcduser/abcd.txt
Или же, проще говоря, это сработает.
scp abcd.txt 127.0.0.1:/abcduser/abcd.txt
Потому что они идентичны.
Решение 2: Добавьте пользователя в группу с правами на запись:
Для того чтобы пользователь мог записывать данные в каталог/файл в Linux, необходимо либо добавить пользователя в группу, которая является владельцем каталога или файла, либо сделать файл собственностью этого пользователя.
В нашем примере мы запускаем команду `ls -l` в каталоге `/home/` на удаленной системе, чтобы узнать, какой группе принадлежит каталог `/home/abcd`.
Команда `ls -l` выдаст результат, в котором содержимое четвертого столбца будет представлять собой группу, которой принадлежит соответствующий каталог/файл.

В нашем примере группа `abcduser` является владельцем каталога `/home/abcduser`, поэтому мы можем
Просто выполните эту команду на удалённой системе.
sudo groupadd user abcd
Это группа 'abcd' Группа, к которой мы хотим причислить пользователя, и пользователь, чью группу мы хотим изменить, — это «user».
Выполните команду `ls -l` еще раз, и если Я увидел букву «w» на шестой позиции. В первом столбце в поле "Выход" указано, что группа имеет права на запись в этот каталог.
Затем снова выполните команду, которая в нашем случае будет следующей:
scp abcd.txt user@somepc:/home/abcduser/abcd.txt
Решение 3: Используйте пользователя, которому принадлежит этот каталог, для копирования файла.
Простейшее решение — это скопировать файл в эту директорию пользователю, являющемуся её владельцем.
Просто выполните команду `ls -l` в нужном каталоге. В нашем случае это будет:
ls -l /home/

В третьем столбце отобразится пользователь, которому принадлежит каталог, соответствующий интересующему вас имени. В нашем случае, как показано на скриншоте выше, `abcduser` является владельцем каталога `/home/abcduser`.
Затем используйте эту конкретную учетную запись при копировании файла с помощью команды `scp` на удаленный хост.
В нашем случае мы выполняем команду следующим образом:
scp abcd.txt abcduser@127.0.0.1:/home/abcduser/abcd.txt
Причина 2: У удалённого хоста отсутствует закрытый ключ для этого пользователя.
При попытке передачи файлов между хостами может появиться ошибка «scp permission denied» (отказано в доступе к открытому ключу).
Это проблема аутентификации для `ssh`, и причина в том, что вы не добавили закрытый ключ в `scp` во время его выполнения.
Пример:
scp somefile user@127.0.0.1:/home/user/somefile.txt
Решение:
Простое решение этой проблемы заключается в следующем: Выполнение команды `scp` с флагом `-i`Поэтому добавьте закрытый ключ пользователя, с которым вы хотите подключиться к удаленному хосту и передать ему файлы.
Вам необходимо убедиться, что у вас есть закрытый ключ для этого пользователя, а если его нет, то вам нужно создать его на удаленной машине, а затем настроить инструмент `scp` на его использование с параметром `-i`.
В нашем случае решение будет следующим:
scp -i key.pem somefile user@127.0.0.1:/home/user/somefile.txt
Где `key.pem` — это файл закрытого ключа для пользователя 'user'.
ملاحظة: Мы использовали `127.0.0.1` В вашем случае, если рассматривать это как удаленный хост, то, скорее всего, это удаленное устройство, а не ваше локальное устройство.
Комментарии закрыты.