¿Usa scp para copiar un archivo a la instancia de Amazon EC2?

198

Estoy tratando de usar mi Mac Terminal para scp un archivo de Descargas (phpMyAdmin que descargué en línea) a mi instancia de Amazon EC2.

El comando que usé fue:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  [email protected]:~/.

El error que obtuve: Advertencia: el archivo de identidad myAmazonKey.pem no es accesible: No existe tal archivo o directorio. Permiso denegado (clave pública). conexión perdida

Tanto myAmazonkey.pem como phpMyAdmin-3.4.5-all-languages.tar.gz están en Descargas, así que intenté

scp -i /Users/Hello_Kitty22/Downloads/myAmazonKey.pem /Users/Hello_Kitty22/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  [email protected]:~/.

y el error que recibí: Advertencia: el archivo de identidad /Usuario/Hello_Kitty22/Downloads/myAmazonkey.pem no está accesible: No existe dicho archivo o directorio. Permiso denegado (clave pública). conexión perdida

¿Alguien puede decirme cómo solucionar mi problema?

PD: hay una publicación similar: scp (copia segura) a la instancia de ec2 sin contraseña, pero no responde mi pregunta.

HoKy22
fuente
Siento que cuando inicio mi instancia de Amazon en línea, ya no puedo acceder a mis archivos locales en Descargas
HoKy22

Respuestas:

376

Intente especificar el usuario a ser ec2-user, por ejemplo

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz [email protected]:~/.

Consulte Conexión a instancias de Linux / UNIX mediante SSH .

WP McNeill
fuente
16
Funciona genial. Tenga en cuenta que su usuario predeterminado puede ser "ubuntu" si está ejecutando una instancia de ubuntu.
RussellStewart
por supuesto, copiar a / puede no funcionar. Gracias por la iluminación!
Dnuske
@DanielDropik No sé si estás bromeando o no ... pero :/intentaría copiar la carpeta a la raíz del sistema, lo que daría errores de permiso en todas las máquinas sin ejecutar sudo (o como root).
Dobz
por qué dice Por favor, inicie sesión como usuario "ubuntu" en lugar de como usuario "root". lo que necesito hacer para copiar
Arjun
en mi caso estaba usando el usuario pero, la diferencia agrego el dns público mec2-50-17-16-67.compute-1.amazonaws.com en lugar de un nombre de dominio
shareef
31

el segundo directorio es su destino objetivo, no use el nombre del servidor allí. En otras palabras, no necesita mencionar el nombre de la máquina para la máquina en la que se encuentra actualmente.

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

-r si es un directorio.

Syed Priom
fuente
19

Su clave no debe ser públicamente visible para que SSH funcione. Use este comando si es necesario:

chmod 400 yourPublicKeyFile.pem
Castelmager
fuente
Me salvaste el día hermano
Mayukh Sarkar
13

Debe estar en su máquina local para probar el comando scp anterior.

En su máquina local intente:

scp -i ~/Downloads/myAmazonKey.pem ~/Downloads/phpMyAdmin-3.4.5-all-languages.tar.gz  [email protected]:~/.
DV Dasari
fuente
9

Aquí están los detalles de lo que funciona para una instancia EC2 :

scp -i /path/to/whatever.pem /users/me/path-to-file [email protected]:~

Algunas notas para comenzar:

  1. Tenga en cuenta los espacios entre los tres parámetros dados después del -i
  2. scpsignifica protocolo de copia segura. Conocer las palabras hace que sea más fácil recordar el comando.
  3. -idicta que debe dar el .pemarchivo como el próximo parámetro. Si no hay -i, entonces no necesita a .pem.
  4. Tenga :~en cuenta el al final del destino para la instancia EC2.
Para descanso
fuente
7

Tuve exactamente el mismo problema, mi solución fue

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (déjalo en blanco aquí)

una vez que haya hecho esta parte, ingrese al servidor ssh y al archivo mv en la ubicación deseada

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

A continuación, el formato SCP me funciona

scp -i /path/my-key-pair.pem [email protected]:~/SampleFile.txt ~/SampleFile2.txt

SampleFile.txt : será la ruta desde su directorio raíz (en mi caso, / home / ubuntu). en mi caso el archivo que quería descargar estaba en / var / www

SampleFile2.txt : será la ruta de la ruta raíz de su máquina (en mi caso, / home / MyPCUserName)

Entonces, tengo que escribir el siguiente comando

scp -i /path/my-key-pair.pem [email protected]:~/../../var/www/Filename.zip ~/Downloads
Vatsal Shah
fuente
2

Enviar archivo de Local a Servidor:

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

Descargar archivo del servidor a local:

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

Viraj Wadate
fuente
1

El proceso de usar SCP para copiar archivos de una máquina local a una instancia de AWS EC2 Linux se trata paso a paso (incluidos los puntos mencionados a continuación) en este video .

Para corregir este problema particular con el uso de SCP:

  1. Debe especificar el usuario de Linux correcto. De Amazon :

    • Para Amazon Linux, el nombre de usuario es ec2-user.
    • Para RHEL, el nombre de usuario es ec2-user o root.
    • Para Ubuntu, el nombre de usuario es ubuntu o root.
    • Para Centos, el nombre de usuario es centos.
    • Para Fedora, el nombre de usuario es ec2-user.
    • Para SUSE, el nombre de usuario es ec2-user o root.
    • De lo contrario, si ec2-user y root no funcionan, consulte con su proveedor de AMI.
  2. Su clave privada no debe ser públicamente visible. Ejecute el siguiente comando para que solo el usuario root pueda leer el archivo.

    chmod 400 /path/to/yourKeyFile.pem
    
blackHoleDetector
fuente
0

Verifique los permisos en el archivo .pem ... A openssh generalmente no le gustan las claves privadas legibles en todo el mundo y fallará (iir, scp no hace un gran trabajo al proporcionar esta retroalimentación al usuario).

¿Puede simplemente ssh con esa clave para su host AWS?

Bryan Stenson
fuente
Sí, puedo usar esa clave para mi host de AWS. De hecho, el problema que tengo es que estoy en el host de Amazon (a través de ssh), así que cuando hago un CD, solo puedo ver los archivos en mi servidor de Amazon, no en mi directorio local de descargas de Mac donde guardé mi archivo pem . Solo puedo cd a mi directorio local de descargas de Mac cuando salgo de mi host ec2. Pero si salgo a mi host ec2, no podría subir el archivo phpMyAdmin a mi servidor ec2. El permiso de mi amigo es de 400, creo que está bien.
HoKy22
2
Muchas gracias por la ayuda, encontré mi problema en la última pregunta que hizo. Parece que puedo ssh o scp, no dos juntos.
HoKy22
gracias por la pista hellokitty22. Tenía dos terminales abiertas, una para ssh y otra para scp también.
donebizkit
0

Primero debe cambiar el modo de .pemarchivo del modo de lectura y escritura al modo de solo lectura. Esto se puede hacer con un solo comando en la terminalsudo chmod 400 your_public_key.pem

Shravan40
fuente
0

Intenté todas las sugerencias mencionadas anteriormente y nada funcionó. Terminé la instancia actual, lancé otra y repetí el mismo proceso exacto. Esta vez no hay problemas. A veces puede ser culpa del remoto AMI.

Marie D.
fuente
0

Esto solo funcionó para mí. Usé una combinación de otras dos respuestas a esta pregunta.

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

El "[email protected]" se copia y pega del DNS público de su instancia de ec2.

Norman Davis
fuente
-1

Yo usaría:

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

usuario1738344
fuente