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  [email protected]:~/.

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  [email protected]:~/.

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.

HoKy22
fonte
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 [email protected]:~/.

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

WP McNeill
fonte
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.

Syed Priom
fonte
19

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

chmod 400 yourPublicKeyFile.pem
Castelmager
fonte
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  [email protected]:~/.
DV Dasari
fonte
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 [email protected]:~

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.
Forrest
fonte
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

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

Abaixo o formato SCP funciona para mim

scp -i /path/my-key-pair.pem [email protected]:~/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 [email protected]:~/../../var/www/Filename.zip ~/Downloads
Vatsal Shah
fonte
2

Enviar arquivo do local para o servidor:

scp -i .ssh / awsinstance.pem my_local_file [email protected]: / home / ubuntu

Baixe o arquivo do servidor para o local:

scp -i .ssh / awsinstance.pem [email protected]: / home / ubuntu / server_file.

Viraj Wadate
fonte
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
    
blackHoleDetector
fonte
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?

Bryan Stenson
fonte
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

Shravan40
fonte
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.

Marie D.
fonte
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 "[email protected]" é copiado e colado no DNS público da sua instância ec2.

Norman Davis
fonte
-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'

user1738344
fonte