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 root@my.ec2.id.amazonaws.com:/

Password:

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


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 root@my.ec2.id.amazonaws.com:/

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 ec2-user@1.2.3.4: / home / ec2-usuário
siliconrockstar

11
@siliconrockstar Sua declaração ec2-user@1.2.3.4:/home/ec2-useré facilmente substituída pela mais curta e fácil ec2-user@1.2.3.4:./ ./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

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 ec2-user@my.ec2.id.amazonaws.com:/home/ec2-user


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.


14

copiar um arquivo de um servidor local para um servidor remoto

sudo scp -i my-pem-file.pem ./source/test.txt ec2-user@1.2.3.4:~/destination/

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

sudo scp -i my-pem-file.pem ec2-user@1.2.3.4:~/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


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 root@my.ec2.id.amazonaws.com:~/

deixe-me saber se não funcionar


scp -i /Users/Username/Downloads/myfile.pem -r ubuntu@my.ect.id.amazonaws.com: ~ / ~ / 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


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!


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.


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.


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

0

escreva este código

scp -r -o "ForwardAgent=yes" /Users/pengge/11.vim root@192.168.2.228:/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.


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