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` В вашем случае, если рассматривать это как удаленный хост, то, скорее всего, это удаленное устройство, а не ваше локальное устройство.

 

Комментарии закрыты.