Usando scp para copiar um arquivo para a instância do Amazon EC2?


198

Estou tentando usar o meu Mac Terminal para scp um arquivo de Downloads (phpMyAdmin baixei on-line) para minha instância do Amazon EC2.

O comando que eu usei foi:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

O erro que recebi: Aviso: O arquivo de identidade myAmazonKey.pem não está acessível: Esse arquivo ou diretório não existe. Permissão negada (chave pública). conexão perdida

Meu myAmazonkey.pem e phpMyAdmin-3.4.5-all-languages.tar.gz estão em Downloads, então tentei

scp -i /Users/Hello_Kitty22/Downloads/myAmazonKey.pem /Users/Hello_Kitty22/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

e o erro que obtive: Aviso: O arquivo de identidade /User/Hello_Kitty22/Downloads/myAmazonkey.pem não está acessível: Esse arquivo ou diretório não existe. Permissão negada (chave pública). conexão perdida

Alguém pode me dizer como resolver meu problema?

ps existe um post semelhante: scp (cópia segura) para a instância ec2 sem senha, mas não responde à minha pergunta.


Eu sinto que quando eu começar a minha instância do Amazon on-line, não posso acessar meus arquivos locais em downloads mais
HoKy22

Respostas:


375

Tente especificar o usuário ec2-user, por exemplo

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz ec2-user@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

Consulte Conectando-se a instâncias Linux / UNIX usando SSH .


16
funciona bem. Observe que o usuário padrão do usuário pode ser "ubuntu" se você estiver executando uma instância do ubuntu.
precisa

é claro que copiar para / pode não funcionar. Obrigado por esclarecer!
dnuske

@DanielDropik Não sei se você está brincando ou não ... mas :/tentaria copiar a pasta para a raiz do sistema, o que daria erros de permissão em todas as máquinas sem executar o sudo (ou como root).
Dobz

Por que está dizendo Por favor, faça o login como usuário "ubuntu" e não como usuário "root". o que eu preciso fazer para cópia
Arjun

No meu caso eu estava usando o usuário, mas, a diferença i adicionar os dns públicas mec2-50-17-16-67.compute-1.amazonaws.com em vez de um nome de domínio
shareef

31

O segundo diretório é o seu destino, não use o nome do servidor. Em outras palavras, você não precisa mencionar o nome da máquina na qual está atualmente.

scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path

-r se for um diretório.


19

Sua chave não deve estar visível publicamente para o SSH funcionar. Use este comando, se necessário:

chmod 400 yourPublicKeyFile.pem

Você salvou meu dia irmão
Mayukh Sarkar

13

Você deve estar na sua máquina local para tentar o comando scp acima.

Na sua máquina local, tente:

scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

9

Aqui estão os detalhes do que funciona para uma instância do EC2 :

scp -i /path/to/whatever.pem /users/me/path-to-file ec2-user@ec2-55-55-555-555.compute-1.amazonaws.com:~

Algumas notas para o começo:

  1. Observe os espaços entre os três parâmetros dados após o -i
  2. scpsignifica protocolo de cópia segura. Conhecer as palavras facilita a lembrança do comando.
  3. -idetermina que você precisa fornecer o .pemarquivo como o próximo parâmetro. Se não houver -i, então você não precisa de .pem.
  4. Observe o :~final do destino para a instância do EC2.

6

Eu tive exatamente o mesmo problema, minha solução foi

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (deixe em branco aqui)

Depois de concluir esta parte, entre no servidor ssh e no arquivo mv no local desejado


5
scp -i ~/path to pem file/file.pem -r(for directory) /PATH OF LOCAL/localfile user@hostname:PATH OF SERVER/serverdirectory

3

Abaixo o formato SCP funciona para mim

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/SampleFile.txt ~/SampleFile2.txt

SampleFile.txt : será o caminho do seu diretório raiz (no meu caso, / home / ubuntu). no meu caso, o arquivo que eu queria baixar estava em / var / www

SampleFile2.txt : será o caminho do caminho raiz da sua máquina (no meu caso, / home / MyPCUserName)

Então, eu tenho que escrever abaixo do comando

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/../../var/www/Filename.zip ~/Downloads

2

Enviar arquivo do local para o servidor:

scp -i .ssh / awsinstance.pem my_local_file ubuntu@XX.XXX.XXX.XXX: / home / ubuntu

Baixe o arquivo do servidor para o local:

scp -i .ssh / awsinstance.pem ubuntu@XX.XXX.XXX.XXX: / home / ubuntu / server_file.


1

O processo de uso do SCP para copiar arquivos de uma máquina local para uma instância do AWS EC2 Linux é abordado passo a passo (incluindo os pontos mencionados abaixo) neste vídeo .

Para corrigir esse problema específico usando o SCP:

  1. Você precisa especificar o usuário Linux correto. Da Amazônia :

    • Para Amazon Linux, o nome de usuário é ec2-user.
    • Para RHEL, o nome de usuário é ec2-user ou root.
    • Para o Ubuntu, o nome de usuário é ubuntu ou root.
    • Para Centos, o nome de usuário é centos.
    • Para o Fedora, o nome de usuário é ec2-user.
    • Para o SUSE, o nome do usuário é ec2-user ou root.
    • Caso contrário, se o usuário ec2 e o root não funcionarem, verifique com seu provedor de AMI.
  2. Sua chave privada não deve estar visível publicamente. Execute o seguinte comando para que apenas o usuário root possa ler o arquivo.

    chmod 400 /path/to/yourKeyFile.pem
    

0

Verifique as permissões no arquivo .pem ... O openssh geralmente não gosta de chaves privadas legíveis pelo mundo e falhará (ou seja, o scp não faz um ótimo trabalho ao fornecer esse feedback ao usuário).

Você pode simplesmente usar ssh com essa chave no seu host da AWS?


Sim, posso ssh com essa chave no meu host da AWS. Na verdade, o problema que estou tendo é que estou no host da Amazon (através do ssh); portanto, quando faço o cd, só consigo ver os arquivos no meu servidor Amazon, não no diretório local de downloads do Mac onde salvei meu arquivo pem . Só posso fazer o cd no diretório local de downloads do Mac quando sair do meu host ec2. Mas se eu sair para o meu host ec2, não poderá carregar o arquivo phpMyAdmin no meu servidor ec2. A permissão do meu pem é 400, acho que está bem.
9132 HoKy22

2
Muito obrigado pela ajuda, encontrei meu problema pela última pergunta que você fez. Parece que eu posso ssh ou scp, não dois juntos.
21132 HoKy22

obrigado pela dica hellokitty22. Eu tinha dois terminais abertos, um para ssh e um para scp também.
donebizkit

0

Primeiro, você deve alterar o modo do .pemarquivo do modo de leitura e gravação para o modo somente leitura. Isso pode ser feito apenas com um único comando no terminalsudo chmod 400 your_public_key.pem


0

Eu tentei todas as sugestões mencionadas acima e nada funcionou. Encerrei a instância atual, lancei outra e repeti o mesmo processo exato. Desta vez sem problemas. Às vezes, pode ser culpa do ami remoto.


0

Isso só funcionou para mim. Eu usei uma combinação de duas outras respostas para esta pergunta.

scp -i /Users/me/documents/myKP.pem -r /Users/me/desktop/testDir \
       ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com:/home/ec2-user/remoteDir

O "ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com" é copiado e colado no DNS público da sua instância ec2.


-1

Eu usaria:

scp -i "path to .pem file" "file to be copeide from local machine" username@amazoninstance: 'destination folder to copy file on remote machine'

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.