¿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  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

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  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

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.


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 ec2-user@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

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


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.


19

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

chmod 400 yourPublicKeyFile.pem

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  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

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 ec2-user@ec2-55-55-555-555.compute-1.amazonaws.com:~

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.

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


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

3

A continuación, el formato SCP me funciona

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/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 ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/../../var/www/Filename.zip ~/Downloads

2

Enviar archivo de Local a Servidor:

scp -i .ssh / awsinstance.pem my_local_file ubuntu@XX.XXX.XXX.XXX: / home / ubuntu

Descargar archivo del servidor a local:

scp -i .ssh / awsinstance.pem ubuntu@XX.XXX.XXX.XXX: / home / ubuntu / server_file.


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
    

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?


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


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.


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 "ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com" se copia y pega del DNS público de su instancia de ec2.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.