Permissão SCP negada: por que isso acontece e como resolver.

O SCP é uma ferramenta de código aberto para transferência de arquivos via SSH. Você pode usá-lo no Linux e em outros sistemas operacionais compatíveis para transferir arquivos por meio de SSH. Ele permite a transferência de arquivos entre dois hosts utilizando uma conexão SSH.

pode acontecer erro "permissão negada" Na SCP por vários motivos, como por exemplo... Rotas definidas incorretamente أو Erro ao escrever a permissãoVamos analisar algumas das razões que levam a esse erro e como corrigi-lo.

Motivo: Falta de permissões de escrita

Um dos motivos pelos quais esse erro ocorre é que Seu usuário não possui permissões de escrita. Para o diretório específico no host onde você está tentando gravar os arquivos. Para verificar essas permissões, você pode Usando o comando 'ls -l'Isso exibirá as permissões de gravação.

Procure a letra 'w' Dentro dos quatro primeiros caracteres da primeira coluna da saída. Se você vir isso, significa que Seu usuário tem permissão de escrita. Portanto, o diretório. Alternativamente, você sempre pode criar um arquivo usando o comando `touch` nesse diretório. Se você não receber nenhum erro, como "permissão negada", significa que seu usuário tem permissões de escrita.

Exemplo:

Suponha que você queira copiar um arquivo para um host remoto usando o SCP e receba um erro de "permissão negada" devido a problemas de permissão de escrita.

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

Solução 1: Use a conta root para transferir arquivos

Para corrigir esse erro, Você precisa conceder permissão para escrever. Para que seu usuário tenha acesso a esse diretório, você precisa de privilégios de root ou sudo. Outra opção é copiar o arquivo para um diretório onde seu usuário tenha permissão de escrita.

Nesse cenário, você precisa conceder permissões de escrita ao usuário atual em /home/abcduser ou pode usar a conta de usuário root para copiar este arquivo.

Para permitir que um usuário root copie um arquivo usando o scp, você precisa permitir o login de root via ssh, o que não é recomendado por motivos de segurança, mas você pode usá-lo mesmo assim em tais cenários e desativá-lo posteriormente.

Para isso, abra O arquivo de configuração do OpenSH está localizado em /etc/ssh/sshd_config. وRemova o comentário sobre PermitRootLogin Em um editor de texto no host remoto.

Em seguida, conecte-se ao host remoto usando sua conta root.

Em seguida, execute o comando da seguinte forma:

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

Ou simplesmente, isto resolverá o problema.

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

Porque são idênticos.

Solução 2: Adicione seu usuário ao grupo com permissões de gravação:

Para que um usuário possa escrever em um diretório/arquivo no Linux, é necessário adicioná-lo ao grupo proprietário do diretório ou arquivo, ou fazer com que o arquivo pertença a esse usuário.

Em nosso exemplo, executamos o comando `ls -l` no diretório `/home/` do sistema remoto para descobrir qual grupo é o proprietário de `/home/abcd`.

O comando `ls -l` fornecerá uma saída onde o conteúdo da quarta coluna representa o grupo proprietário do diretório/arquivo correspondente.

Em nosso exemplo, o grupo `abcduser` é o proprietário do diretório `/home/abcduser` e, portanto, podemos

Basta executar este comando no sistema remoto.

sudo groupadd user abcd

É o grupo 'abcd' O grupo ao qual queremos que o nosso usuário pertença, e o usuário cujo grupo queremos alterar, é 'user'.

Execute o comando `ls -l` novamente e, se Eu vi a letra 'w' na sexta posição. A saída indicada na primeira coluna significa que o grupo tem permissões de escrita neste diretório.

Em seguida, execute o comando novamente, que em nosso caso será:

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

Solução 3: Utilize o usuário proprietário deste diretório para copiar o arquivo.

A solução mais simples de todas é que o usuário proprietário deste diretório copie o arquivo para ele.

Basta executar o comando `ls -l` no diretório. No nosso caso, será:

ls -l /home/

O resultado da terceira coluna será o usuário proprietário do diretório correspondente ao nome do diretório que você está procurando. No nosso caso, `abcduser` é o proprietário do diretório `/home/abcduser`, como mostrado na captura de tela acima.

Em seguida, utilize essa conta específica ao copiar o arquivo usando o comando `scp` para o host remoto.
No nosso caso, executamos o comando da seguinte forma:

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

Motivo 2: O host remoto não possui uma chave privada para esse usuário.

Você pode receber um erro informando “permissão scp negada” (chave pública) ao tentar transferir arquivos entre hosts.

Este é um problema de autenticação para o `ssh` e o motivo é que você não adicionou uma chave privada ao `scp` enquanto ele estava em execução.

Exemplo:

scp somefile user@127.0.0.1:/home/user/somefile.txt

الحل:

A solução simples para isso é Executando o comando `scp` com a flag `-i`Portanto, adicione a chave privada do usuário que você deseja conectar ao host remoto e para o qual deseja transferir arquivos.

Você precisa se certificar de que possui a chave privada desse usuário e, caso não a tenha, precisa criá-la na máquina remota e, em seguida, fazer com que a ferramenta `scp` a utilize com a opção `-i`.

No nosso caso, a solução seria:

scp -i key.pem somefile user@127.0.0.1:/home/user/somefile.txt

Onde `key.pem` é o arquivo de chave privada do usuário 'user'.

ملاحظة: Nós usamos `127.0.0.1` A título de exemplo, considerando apenas o host remoto, no seu caso, o host remoto provavelmente é um dispositivo remoto e não o seu dispositivo local.

 

Comentários estão fechados.