scp (copia segura) a la instancia ec2 sin contraseña

404

Tengo una instancia de EC2 ejecutándose (FreeBSD 9 AMI ami-8cce3fe5), y puedo ingresar usando mi archivo de clave creado por Amazon sin solicitud de contraseña, no hay problema.

Sin embargo, cuando quiero copiar un archivo a la instancia usando scp, se me pide que ingrese una contraseña:

scp somefile.txt -i mykey.pem root@my.ec2.id.amazonaws.com:/

Password:

¿Alguna idea de por qué sucede esto / cómo se puede prevenir?

Hoff
fuente
¿Está utilizando excatly el mismo identificador para el usuario y el host?
Lynch
No estoy seguro de entender lo que quiere decir con identificador, ¿podría explicarlo?
Hoff
si para una conexión usa una dirección IP y para la otra usa un nombre, no funcionará. Acabo de ver que usa la -iopción para proporcionar su identidad. Es posible que también deba mostrar el comando que usa para iniciar sesión con ssh.
Lynch
gracias Lynch, lo descubrí!
Hoff

Respuestas:

804

Me lo imaginé. Tenía los argumentos en el orden incorrecto. Esto funciona:

scp -i mykey.pem somefile.txt root@my.ec2.id.amazonaws.com:/
Hoff
fuente
14
de quien entiende cómo conectarse a ec2 a través de ssh, simplemente cambie el sshcomando scpy agregue el archivo de nombre después del archivo pem.
Claudio Santos
11
Dado que esta respuesta es un poco antigua, un ejemplo más reciente de mi nueva instancia EC2: scp -i kp1.pem ./file.txt ec2-user@1.2.3.4: / home / ec2-user
siliconrockstar el
1
@siliconrockstar ¡Su declaración ec2-user@1.2.3.4:/home/ec2-userse reemplaza fácilmente con el ec2-user@1.2.3.4:./ ./FTW más corto y fácil !
Brock 01 de
2
Un comentario muy tardío, pero lo que sugiere @ClaudioSantos no funciona exactamente si está utilizando un puerto no estándar. Es -p para ssh y -P para scp.
Inukshuk
1
Puedo usar mi archivo * .PEM para ssh en ec2. sin embargo, cuando quiero usarlo para SCP un archivo, me da el error "Permiso denegado". ¿Como puedo resolver esto?
AleX_
58
scp -i /path/to/your/.pemkey -r /copy/from/path user@server:/copy/to/path
Syed Priom
fuente
El parámetro (-r) no es obligatorio, pero es necesario eliminar (/) del final de la ruta remota. Su ejemplo funcionó para mí, muchas gracias
Abbas
35

He utilizado el siguiente comando para copiar desde Linux local Centos 7 a AWS EC2.

scp -i user_key.pem file.txt ec2-user@my.ec2.id.amazonaws.com:/home/ec2-user
Renato Coutinho
fuente
20

Hacer que el comentario de siliconerockstar sea una respuesta ya que funcionó para mí

scp -i kp1.pem ./file.txt ec2-user@1.2.3.4:/home/ec2-user
joseph.hainline
fuente
19
scp -i ~/.ssh/key.pem ec2-user@ip:/home/ec2-user/file-to-copy.txt .

El nombre del archivo no debe estar entre el archivo pem y la cadena ec2-user, eso no funciona. Esto también le permite reservar el nombre del archivo copiado.

Siglo de dele
fuente
14

copiar un archivo de un servidor local a un servidor remoto

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

copiar un archivo de un servidor remoto a una máquina local

sudo scp -i my-pem-file.pem ec2-user@1.2.3.4:~/source/of/remote/test.txt ./where/to/put

Entonces, la sintaxis básica es: -

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

-ies para el archivo de identidad

Jamil Noyda
fuente
8

supongamos que su archivo pem y somefile.txt que desea enviar están en la carpeta Descargas

scp -i ~/Downloads/mykey.pem ~/Downloads/somefile.txt root@my.ec2.id.amazonaws.com:~/

avísame si no funciona

Yatender Singh
fuente
scp -i /Users/Username/Downloads/myfile.pem -r ubuntu@my.ect.id.amazonaws.com: ~ / ~ / Desktop / en caso de que desee transferir el archivo del servidor al local
Yatender Singh
2
Gracias, me dieron "acceso denegado" :/al final pero :~/funciona
cardamomo
Sí, porque: / es la carpeta raíz y: ~ / es la carpeta de usuario, así que si eres usuario raíz, entonces: / o: ~ / cualquier cosa funcionará y si no eres usuario raíz, entonces solo: ~ / tienes que usarlo.
Yatender Singh
3

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

esto será muy útil para todos ustedes

Barkat
fuente
2

Mi hadoopec2cluster.pemarchivo era el único en el directorio en mi Mac local, no podía scp a aws usando scp -i hadoopec2cluster.pem hadoopec2cluster.pem ubuntu@serverip:~.

Copié hadoopec2cluster.pem en hadoopec2cluster_2.pem y luego scp -i hadoopec2cluster.pem hadoopec2cluster_2.pem ubuntu@serverip:~. Voila!

fall14123
fuente
2

Estaba colgado en esto porque estaba especificando mi archivo de clave pública en

scp -i [private key file path]

Cuando capté ese error y lo cambié a la ruta de la clave privada, estaba todo listo.

BuvinJ
fuente
2

En su caso, el usuario rootno tendrá ningún problema. Pero en ciertos casos en los que debe iniciar sesión en SSH como un usuario diferente, asegúrese de que el directorio que está scputilizando tenga los permisos adecuados para el usuario que está utilizando SSH.

Shawn
fuente
1

Para usar PSCP, necesita la clave privada que generó al convertir su clave privada utilizando PuTTYgen. También necesita la dirección DNS pública de su instancia de 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
fuente
0

escribe este código

scp -r -o "ForwardAgent=yes" /Users/pengge/11.vim root@192.168.2.228:/root/

Si tiene una clave SSH con acceso al servidor de destino y el servidor de origen no, agregar -o "ForwardAgent = yes" le permitirá reenviar su agente SSH al servidor de origen para que pueda usar su clave SSH para conectarse El servidor de destino.

庄景鹏
fuente
-6

Acabo de probar:

Ejecute el siguiente comando:

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

Entonces:

  1. crear ami (imagen del ec2).
  2. el lanzamiento desde la nueva ami (imagen) del paso no 2 eligió nuevas claves.
amar essa
fuente