Отказано в разрешении SCP: в чем причина? Как исправить?

SCP — это открытая утилита для передачи файлов SSH, которую вы можете использовать в Linux и других поддерживаемых операционных системах для передачи файлов по SSH. Его можно использовать для передачи файлов между двумя хостами с помощью соединения SSH.

Ошибка SCP «Отказано в доступе» может возникать по разным причинам, например, из-за неправильно указанных путей или ошибки разрешения на запись. Мы рассмотрим некоторые причины возникновения этой ошибки и способы ее устранения.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Причина: нет прав на запись

Одна из причин возникновения этой ошибки заключается в том, что у вашего пользователя нет прав на запись для определенного каталога на хосте, в который вы пытаетесь записать файлы. Чтобы проверить эти разрешения, вы можете использовать команду «ls -l», которая отобразит разрешения на запись.

Найдите букву «w» в первых четырех буквах первого столбца вывода. Если вы видите его, это означает, что у вашего пользователя есть права на запись в этот каталог. Кроме того, вы всегда можете создать файл с помощью команды touch в этом каталоге. Если вы не получаете никаких ошибок, таких как «отказано в доступе», это означает, что у вашего пользователя есть права на запись.

Пример:

Допустим, вы хотите скопировать файл на удаленный хост с помощью SCP, и вам отказывают в доступе из-за прав на запись.

scp abcd.txt пользователь@127.0.0.1:/home/abcduser/abcd.txt

Решение 1. Используйте учетную запись root для передачи файлов

Чтобы исправить такую ​​ошибку, вам необходимо предоставить пользователю права на запись для этого каталога. Для этого вам нужны привилегии root или sudo. Еще одна вещь, которую вы можете сделать, это скопировать файл в каталог, где у вашего пользователя есть права на запись.

В таком случае вам нужно либо разрешить текущему пользователю права на запись в /home/abcduser, либо вы можете использовать учетную запись пользователя root для копирования этого файла.

Чтобы разрешить пользователю root копировать файл с помощью scp, вам необходимо разрешить вход в систему root по ssh, что не рекомендуется из соображений безопасности, но вы все равно можете использовать его в таких сценариях и отключить его впоследствии.

Для этого откройте конфигурацию openssh в /etc/ssh/sshd_config и раскомментируйте PermitRootLogin в текстовом редакторе на удаленном хосте.

После этого подключитесь к удаленному хосту, используя его корневую учетную запись.

Затем выполните команду следующим образом:

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 даст вам вывод, где содержимое 4-го столбца — это группа, которой принадлежит соответствующий каталог/файл.

В нашем примере это группа abcduser, которой принадлежит каталог /home/abcduser, тогда мы можем

Просто запустите эту команду на удаленной системе.

sudo groupдобавить пользователя abcd

Мы хотим, чтобы наш пользователь был частью группы «abcd», а пользователь, группу которого мы хотим изменить, называется «пользователь».

Запустите команду ls -l еще раз, и если вы увидите «w» на 6-м месте вывода в первом столбце, это означает, что у группы есть права на запись в этот каталог.

Затем снова запустите команду, которая в нашем случае будет следующей:

scp abcd.txt user@somepc:/home/abcduser/abcd.txt

Решение 3. Используйте пользователя, которому принадлежит этот каталог, для копирования файла

Самое простое решение — использовать пользователя, которому принадлежит этот каталог, для копирования в него файла.

Просто запустите ls -l в каталоге. В нашем случае это будет:

лс -л /дом/

Результатом третьего столбца будет пользователь, которому принадлежит этот каталог, соответствующий имени интересующего вас каталога. В нашем случае это abcduser, которому принадлежит каталог /home/abcduser, как показано на снимке экрана выше.

Затем используйте эту конкретную учетную запись при копировании файла с помощью scp на удаленный хост.
В нашем случае мы запускаем команду следующим образом:

scp abcd.txt abcduser@127.0.0.1:/home/abcduser/abcd.txt

Причина 2: отсутствие закрытого ключа для этого пользователя удаленного хоста

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

Это проблема аутентификации ssh, и причина этого в том, что вы не добавили закрытый ключ в scp во время его запуска.

Пример:

scp некоторый файл пользователя@127.0.0.1:/home/user/somefile.txt

Решение:

Простое исправление для этого — запустить команду scp с флагом -i, тем самым добавив закрытый ключ для того пользователя, с помощью которого вы хотите подключиться к удаленному хосту и передать файлы.

Вам нужно убедиться, что у вас есть закрытый ключ для этого пользователя, и если у вас его нет, вам нужно сгенерировать его на удаленной машине, а затем утилита scp использует его с помощью флага -i.

В нашем случае решение будет таким:

scp -i key.pem какой-то файл user@127.0.0.1:/home/user/somefile.txt

Где key.pem — это файл закрытого ключа для пользователя «пользователь».

Примечание. Мы использовали 127.0.0.1 в качестве удаленного хоста только для примера, в вашем случае удаленный хост, скорее всего, будет удаленным компьютером, а не вашим локальным хостом.

Программы для Windows, мобильные приложения, игры - ВСЁ БЕСПЛАТНО, в нашем закрытом телеграмм канале - Подписывайтесь:)

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *