Utiliser scp pour copier un fichier vers une instance Amazon EC2?


198

J'essaie d'utiliser mon terminal Mac pour scanner un fichier depuis Téléchargements (phpMyAdmin téléchargé en ligne) vers mon instance Amazon EC2.

La commande que j'ai utilisée était:

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz  hk22@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

L'erreur que j'ai obtenue: Avertissement: le fichier d'identité myAmazonKey.pem n'est pas accessible: aucun fichier ou répertoire de ce type. Autorisation refusée (publickey). connexion perdue

Mes myAmazonkey.pem et phpMyAdmin-3.4.5-all-languages.tar.gz sont tous deux en téléchargement, alors j'ai essayé

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:~/.

et l'erreur que j'ai obtenue: Avertissement: fichier d'identité /User/Hello_Kitty22/Downloads/myAmazonkey.pem non accessible: aucun fichier ou répertoire de ce type. Autorisation refusée (publickey). connexion perdue

Quelqu'un peut-il me dire comment résoudre mon problème?

ps il y a un post similaire: scp (copie sécurisée) à l'instance ec2 sans mot de passe mais il ne répond pas à ma question.


J'ai l'impression que lorsque je démarre mon instance Amazon en ligne, je ne peux plus accéder à mes fichiers locaux dans Téléchargements
HoKy22

Réponses:


376

Essayez de spécifier l'utilisateur à être ec2-user, par exemple

scp -i myAmazonKey.pem phpMyAdmin-3.4.5-all-languages.tar.gz ec2-user@mec2-50-17-16-67.compute-1.amazonaws.com:~/.

Voir Connexion à des instances Linux / UNIX à l'aide de SSH .


16
fonctionne très bien. Notez que votre utilisateur par défaut peut être "ubuntu" si vous exécutez une instance ubuntu.
RussellStewart

bien sûr, la copie vers / peut ne pas fonctionner. Merci d'avoir éclairé!
dnuske

@DanielDropik Je ne sais pas si vous plaisantez ou non ... mais :/j'essaierais de copier le dossier à la racine du système, ce qui donnerait des erreurs d'autorisation sur toutes les machines sans exécuter sudo (ou en tant que root).
Dobz

pourquoi il dit Veuillez vous connecter en tant qu'utilisateur "ubuntu" plutôt qu'en tant qu'utilisateur "root". ce que je dois faire pour la copie
Arjun

dans mon cas, j'utilisais l'utilisateur mais, la différence j'ajoute le DNS public mec2-50-17-16-67.compute-1.amazonaws.com au lieu d'un nom de domaine
shareef

31

le deuxième répertoire est votre destination cible, n'utilisez pas de nom de serveur ici. En d'autres termes, vous n'avez pas besoin de mentionner le nom de la machine sur laquelle vous vous trouvez actuellement.

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

-r s'il s'agit d'un répertoire.


19

Votre clé ne doit pas être visible publiquement pour que SSH fonctionne. Utilisez cette commande si nécessaire:

chmod 400 yourPublicKeyFile.pem

Vous avez sauvé mon frère du jour
Mayukh Sarkar

13

Vous devriez être sur votre machine locale pour essayer la commande scp ci-dessus.

Sur votre ordinateur local, essayez:

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

Voici les détails de ce qui fonctionne pour une instance EC2 :

scp -i /path/to/whatever.pem /users/me/path-to-file ec2-user@ec2-55-55-555-555.compute-1.amazonaws.com:~

Quelques notes pour commencer:

  1. Notez les espaces entre les trois paramètres donnés après la -i
  2. scpsignifie protocole de copie sécurisée. La connaissance des mots facilite la mémorisation de la commande.
  3. -idicte que vous devez donner le .pemfichier comme paramètre suivant. S'il n'y en a pas -i, alors vous n'avez pas besoin d'un .pem.
  4. Notez le :~à la fin de la destination pour l'instance EC2.

7

J'avais exactement le même problème, ma solution était de

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (laissez ce champ vide ici)

une fois que vous avez terminé cette partie, accédez au serveur ssh et au fichier mv à l'emplacement souhaité


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

3

Le format SCP ci-dessous fonctionne pour moi

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/SampleFile.txt ~/SampleFile2.txt

SampleFile.txt : Ce sera le chemin de votre répertoire racine (dans mon cas, / home / ubuntu). dans mon cas, le fichier que je voulais télécharger était à / var / www

SampleFile2.txt : Ce sera le chemin du chemin racine de votre machine (dans mon cas, / home / MyPCUserName)

Donc, je dois écrire la commande ci-dessous

scp -i /path/my-key-pair.pem ec2-user@ec2-198-51-100-1.compute-1.amazonaws.com:~/../../var/www/Filename.zip ~/Downloads

2

Envoyer le fichier du local au serveur:

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

Téléchargez le fichier du serveur vers le local:

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


1

Le processus d'utilisation de SCP pour copier des fichiers d'une machine locale vers une instance AWS EC2 Linux est décrit étape par étape (y compris les points mentionnés ci-dessous) dans cette vidéo .

Pour corriger ce problème particulier avec l'utilisation de SCP:

  1. Vous devez spécifier le bon utilisateur Linux. Depuis Amazon :

    • Pour Amazon Linux, le nom d'utilisateur est ec2-user.
    • Pour RHEL, le nom d'utilisateur est ec2-user ou root.
    • Pour Ubuntu, le nom d'utilisateur est ubuntu ou root.
    • Pour Centos, le nom d'utilisateur est centos.
    • Pour Fedora, le nom d'utilisateur est ec2-user.
    • Pour SUSE, le nom d'utilisateur est ec2-user ou root.
    • Sinon, si l'utilisateur ec2 et root ne fonctionnent pas, consultez votre fournisseur AMI.
  2. Votre clé privée ne doit pas être visible publiquement. Exécutez la commande suivante pour que seul l'utilisateur root puisse lire le fichier.

    chmod 400 /path/to/yourKeyFile.pem
    

0

Vérifiez les autorisations sur le fichier .pem ... openssh n'aime généralement pas les clés privées lisibles par tout le monde et échouera (iir, scp ne fait pas un excellent travail pour fournir ces commentaires à l'utilisateur).

Pouvez-vous simplement ssh avec cette clé sur votre hôte AWS?


Oui, je peux ssh avec cette clé sur mon hôte AWS. En fait, le problème que je rencontre est que je suis sur l'hôte Amazon (via ssh), donc quand je fais un cd, je ne peux voir que les fichiers sur mon serveur Amazon, pas mon répertoire de téléchargements Mac local où j'ai enregistré mon fichier pem . Je ne peux accéder à mon répertoire de téléchargements Mac local que lorsque je quitte mon hôte ec2. Mais si je quitte sur mon hôte ec2, je ne pourrais pas télécharger le fichier phpMyAdmin sur mon serveur ec2. La permission de mon pem est de 400, je pense que ça va.
HoKy22

2
Merci beaucoup pour l'aide, j'ai trouvé mon problème par la dernière question que vous avez posée. Il semble que je puisse soit ssh ou scp, pas deux ensemble.
HoKy22

merci pour l'indice hellokitty22. J'avais deux terminaux ouverts, un pour ssh et un pour scp aussi.
donebizkit

0

Vous devez d'abord changer le mode de .pemfichier du mode lecture et écriture au mode lecture seule. Cela peut être fait simplement par une seule commande dans le terminalsudo chmod 400 your_public_key.pem


0

J'ai essayé toutes les suggestions mentionnées ci-dessus et rien n'a fonctionné. J'ai mis fin à l'instance actuelle, j'en ai lancé une autre et j'ai répété le même processus exact. Cette fois, aucun problème. Parfois, ce pourrait être la faute de l'ami distant.


0

Cela a juste fonctionné pour moi. J'ai utilisé une combinaison de deux autres réponses à cette question.

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

"Ec2-user@ec2-11-111-11-11.compute-1.amazonaws.com" est copié-collé à partir du DNS public de votre instance ec2.


-1

J'utiliserais:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.