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  [email protected]:~/.

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  [email protected]:~/.

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.

HoKy22
la source
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 [email protected]:~/.

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

WP McNeill
la source
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.

Syed Priom
la source
19

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

chmod 400 yourPublicKeyFile.pem
Castelmager
la source
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  [email protected]:~/.
DV Dasari
la source
9

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

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

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.
Forrest
la source
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é

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

Le format SCP ci-dessous fonctionne pour moi

scp -i /path/my-key-pair.pem [email protected]:~/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 [email protected]:~/../../var/www/Filename.zip ~/Downloads
Vatsal Shah
la source
2

Envoyer le fichier du local au serveur:

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

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

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

Viraj Wadate
la source
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
    
blackHoleDetector
la source
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?

Bryan Stenson
la source
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

Shravan40
la source
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.

Marie D.
la source
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

"[email protected]" est copié-collé à partir du DNS public de votre instance ec2.

Norman Davis
la source
-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'

user1738344
la source