scp (cópia segura) para instância ec2 sem senha

404

Eu tenho uma instância do EC2 em execução (FreeBSD 9 AMI ami-8cce3fe5) e posso fazer ssh nela usando meu arquivo de chave criado pela amazon sem solicitação de senha, sem problemas.

No entanto, quando eu quero copiar um arquivo para a instância usando scp, sou solicitado a inserir uma senha:

scp somefile.txt -i mykey.pem [email protected]:/

Password:

Alguma idéia de por que isso está acontecendo / como pode ser evitado?

Hoff
fonte
Você está usando exatamente o mesmo identificador para o usuário e o host?
Lynch
Não sei se entendi o que você quer dizer com identificador, você poderia explicar?
Hoff
se em uma conexão você usar um endereço IP e na outra usar um nome, ele não funcionará. Acabei de ver que você usa a -iopção para fornecer sua identidade. Pode ser que você também deva mostrar o comando usado para efetuar login com o ssh.
Lynch
obrigado lynch, descobri!
Hoff

Respostas:

804

Eu descobri. Eu tive os argumentos na ordem errada. Isso funciona:

scp -i mykey.pem somefile.txt [email protected]:/
Hoff
fonte
14
de quem entende como se conectar ao ec2 por meio do ssh, basta alterar o sshcomando scpe adicionar o arquivo de nome após o arquivo pem.
Claudio Santos
11
Uma vez que esta resposta é um pouco velho, um exemplo mais recente de minha nova instância EC2: scp -i kp1.pem ./file.txt [email protected]: / home / ec2-usuário
siliconrockstar
11
@siliconrockstar Sua declaração [email protected]:/home/ec2-useré facilmente substituída pela mais curta e fácil [email protected]:./ ./FTW!
181 brock #
2
Um comentário muito tardio, mas o que o @ClaudioSantos sugere não funciona exatamente se você estiver usando uma porta não padrão. É -p para ssh e -P para scp.
Inukshuk
11
Posso usar meu arquivo * .PEM para ssh no ec2. no entanto, quando quero usá-lo no arquivo SCP, ele me dá o erro "Permissão negada"! Como posso resolver isso?
AleX_ 18/01/19
58
scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path
Syed Priom
fonte
O parâmetro (-r) não é necessário, mas é necessário remover (/) do final do caminho remoto. Seu exemplo funcionou para mim, muito obrigado
Abbas
35

Eu usei o comando abaixo para copiar do linux local Centos 7 para o AWS EC2.

scp -i user_key.pem file.txt [email protected]:/home/ec2-user
Renato Coutinho
fonte
20

Fazer do comentário da siliconerockstar uma resposta, uma vez que funcionou para mim

scp -i kp1.pem ./file.txt [email protected]:/home/ec2-user
joseph.hainline
fonte
19
scp -i ~/.ssh/key.pem ec2-user@ip:/home/ec2-user/file-to-copy.txt .

O nome do arquivo não deve estar entre o arquivo pem e a string do usuário ec2 - isso não funciona. Isso também permite reservar o nome do arquivo copiado.

Dele
fonte
14

copiar um arquivo de um servidor local para um servidor remoto

sudo scp -i my-pem-file.pem ./source/test.txt [email protected]:~/destination/

copiar um arquivo de um servidor remoto para uma máquina local

sudo scp -i my-pem-file.pem [email protected]:~/source/of/remote/test.txt ./where/to/put

Portanto, a sintaxe basicamente é: -

scp -i my-pem-file.pem username@source:/location/to/file username@destination:/where/to/put

-ié para o arquivo de identidade

Jamil Noyda
fonte
8

vamos supor que seu arquivo pem e somefile.txt que você deseja enviar estejam na pasta Downloads

scp -i ~/Downloads/mykey.pem ~/Downloads/somefile.txt [email protected]:~/

deixe-me saber se não funcionar

Yatender Singh
fonte
scp -i /Users/Username/Downloads/myfile.pem -r [email protected]: ~ / ~ / Desktop / no caso de você querer transferir arquivos do servidor para o local
Yatender Singh
2
Obrigado, obtive "acesso negado" com :/no final, mas com :~/isso funciona
cardamomo
sim, porque: / é a pasta raiz e: ~ / é a pasta do usuário; portanto, se você é usuário raiz, então: / ou: ~ / qualquer coisa funcionará e se você não for usuário raiz, apenas: ~ / você deve usar.
Yatender Singh
3

scp -i /home/barkat/Downloads/LamppServer.pem lampp_x64_12.04.tar.gz

isso será muito útil para todos vocês

Ladrar a
fonte
2

Meu hadoopec2cluster.pemarquivo era o único no diretório do meu mac local, não podia scp-lo para aws usandoscp -i hadoopec2cluster.pem hadoopec2cluster.pem ubuntu@serverip:~ .

Copiou hadoopec2cluster.pem para hadoopec2cluster_2.pem e, em seguida scp -i hadoopec2cluster.pem hadoopec2cluster_2.pem ubuntu@serverip:~. Voila!

fall14123
fonte
2

Fiquei desligado porque estava especificando meu arquivo de chave pública em

scp -i [private key file path]

Quando percebi esse erro e o alterei para o caminho da chave privada, estava tudo pronto.

BuvinJ
fonte
2

No seu caso, o usuário rootnão terá problemas. Mas em certos casos em que você é obrigado a fazer login no SSH como um usuário diferente, verifique se o diretório que você está scpinserindo tem permissões adequadas para o usuário que você está acessando o SSH.

Shawn
fonte
1

Para usar o PSCP, você precisa da chave privada gerada em Convertendo sua chave privada usando o PuTTYgen. Você também precisa do endereço DNS público da sua instância do Linux

pscp -i C:\path\my-key-pair.ppk C:\path\Sample_file.txt ec2-user@public_dns:/home/ec2-user/Sample_file.txt
dheeraj kumar
fonte
0

escreva este código

scp -r -o "ForwardAgent=yes" /Users/pengge/11.vim [email protected]:/root/

Se você tiver uma chave SSH com acesso ao servidor de destino e o servidor de origem não, adicionar -o "ForwardAgent = yes" permitirá encaminhar seu agente SSH para o servidor de origem, para que ele possa usar sua chave SSH para conectar-se ao o servidor de destino.

庄景鹏
fonte
-6

Apenas testado:

Execute o seguinte comando:

sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub

Então:

  1. crie ami (imagem do ec2).
  2. o lançamento da nova ami (imagem) do passo 2 escolheu novas chaves.
amar essa
fonte