Transferir arquivos usando scp: permissão negada


23

Tento transferir arquivos do computador remoto usando sshpara o meu computador:

scp My_file.txt user_id@server:/Home

Isso deve colocar o My_file.txt na pasta inicial do meu computador, certo? eu recebo

scp / Home: permissão negada

Também quando tento ...@server:/Desktop:, a fim de copiar os arquivos do computador remoto para a minha área de trabalho.

O que estou fazendo errado?


11
Se você deseja copiar o arquivo para a pasta pessoal de 'user_id', use scp My_file.txt user_id@server:Copia para a pasta pessoal dos usuários.
Manula Waidyanatha

Respostas:


36

Seus comandos estão tentando colocar o novo documento na raiz ( /) da sua máquina. O que você deseja fazer é transferi-los para o diretório inicial (já que você não tem permissão para gravar /). Se o caminho para sua casa for algo parecido com /home/erezo seguinte:

scp My_file.txt user_id@server:/home/erez/

Você pode substituir o caminho para o diretório inicial pelo atalho ~/, para que o seguinte tenha o mesmo efeito:

scp My_file.txt user_id@server:~/

Você pode até deixar de fora o caminho no lado remoto; isso significa seu diretório inicial.

scp My_file.txt user_id@server:

Ou seja, para copiar o arquivo na área de trabalho, você pode transferi-lo para /home/erez/Desktop/:

scp My_file.txt user_id@server:/home/erez/Desktop/

ou usando o atalho:

scp My_file.txt user_id@server:~/Desktop/

ou usando um caminho relativo no lado remoto, que é interpretado em relação ao seu diretório pessoal:

scp My_file.txt user_id@server:Desktop/

Editar:

Como o @ckhan já mencionou, você também precisa trocar os argumentos, ele deve ser

scp FROM TO

Portanto, se você deseja copiar o arquivo My_file.txtdo servidor user_id@serverpara a área de trabalho, tente o seguinte:

scp user_id@server:/path/to/My_file.txt ~/Desktop/

Se o arquivo My_file.txtestiver localizado no diretório inicial do servidor, você poderá usar novamente o atalho:

scp user_id@server:~/My_file.txt ~/Desktop/

- Tentei: "~ /" para 'Home' agora e também "~ / Desktop /. Ambos resultaram em: My_file.txt 100% 0 0.0 KB / s 00:00 e não consigo ver os arquivos no meu O que ainda estou fazendo de errado? Muito obrigado!
Erez 12/12

No seu segundo exemplo de comando, o ~deve ser protegido da avaliação para ser avaliado no host remoto: \~por exemplo.
dan

11
Para agradecer, me registrei no site. Graças você salvou o meu dia :)
Ad Infinitum

6

Eu vim aqui para "Transferir arquivos usando scp: permissão negada" porque tive o mesmo erro.

No meu caso, o arquivo baixado com scp teria sobrescrito um arquivo pertencente ao root e eu não era root. Em resumo, verifique a propriedade do arquivo que está sendo substituído.


11
Neste caso, é porque ele está a tentar escrever /Homee não ser usuário root, ele não tem acesso de gravação fora~/
Shadur

Você me ajuda.
longdeqidao 25/03

4

isso parece ser um problema de permissão

O arquivo pode não ter permissões de leitura, pois é entregue ao servidor de destino como a conta de origem.

você precisa garantir que o arquivo na fonte tenha permissões necessárias, especialmente permissão de leitura

-rw-r - r--

chmod 744

então scp o arquivo para o destino. Isso será resolvido


3
-rw-r--r--é 644, não 744. A configuração da permissão executável em um arquivo que não é realmente executável pode causar problemas.
G-Man Diz 'Reinstate Monica'

3

O que fixa a "permissão negada" para mim foi, no servidor remoto, alterar a propriedade pasta para root: (! Isso pode acontecer quando você está enviando um arquivo para um usuário não-root, eo diretório é propriedade de raiz) On a máquina remota (cópia dest.):

sudo chown (your username) (remote folder)

Além disso, ative todas as permissões na pasta remota: (Nem sempre é necessário):

sudo chmod 777 (remote folder)

1

Você tem os argumentos para scpreverter. É a fonte primeiro, depois o destino, como cp. man scppara mais detalhes.


1

Permissão negada significa que você não é a raiz do servidor. Você apenas mantém uma conta lá. Portanto, nesse caso, você precisa fazer o seguinte:

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

Isso será copiado para o diretório inicial no servidor.

Isso também funcionará:

scp -r /path2yourFolder/ username@server_Ip:~/

0

Instale uma ferramenta do Windows "mRemoteG" em www.mremoteng.org/

Crie sua conexão SSH na caixa desejada.

Clique no menu "Transferir arquivo".

Isso permitirá transferir arquivos facilmente do Windows para o Linux.

obrigado.


0

Amazon Linux AMI

Certifique-se de que você precisa definir o caminho absoluto do servidor, a partir de casa, no caso atual:

scp file.txt SSH-ALIAS:/home/YOUR_USER/

0

As mesmas permissões se aplicam nos dois lados do scp. Você receberá esse erro se o usuário não tiver permissão para gravar no destino. Os sintomas parecem implicar a fonte, no entanto, no meu caso, o destino foi criado pela raiz e não tinha permissão de gravação para a conta de usuário pretendida.


0

No meu caso, também tentei conceder toda a permissão com -R para a pasta, mas ainda assim recebi o erro sobre a permissão.

Eu tive que remover "/" antes do caminho do servidor e da pasta de destino. O motivo é porque Downloads é a primeira pasta que posso listar após o ssh no servidor, por exemplo: ssh tiennsloit@13.76.91.2

Isso funciona:

sudo scp -rp /Users/macintosh.vn/Downloads/bbhs_20190301.zip tiennsloit@13.76.91.2: Downloads

Isso não estava funcionando:

sudo scp -rp /Users/macintosh.vn/Downloads/bbhs_20190301.zip tiennsloit@13.76.91.2: / Downloads


0

Correção fácil. Certifique-se de que você é root. SCP para o controle remoto e solicitará a senha de root das máquinas. Só tinha esse problema que era a solução. Você os enraíza.


Como os logins raiz normalmente são desabilitados no sshd_config , você deve mostrar ao OP como mudar isso (embora não seja recomendado).
ajgringo619 21/11

Por que você insiste em usar o root para copiar um (qualquer) arquivo? Observe também a resposta aceita de ~ 7 anos atrás ...
Jeff Schaller

-3

Antes de usar o comando scp, certifique-se de fornecer permissões de leitura, gravação e execução para todos os que estão de fora. "chmod 777 file_name"


você pode copiar arquivos que não são 777
Archemar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.