Using scp to copy a file to Amazon EC2 instance?

Amazon Ec2TerminalCopyScpPublic Key

Amazon Ec2 Problem Overview


I am trying to use my Mac Terminal to scp a file from Downloads (phpMyAdmin I downloaded online) to my Amazon EC2 instance.

The command I used was:

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

The error I got: Warning: Identity file myAmazonKey.pem not accessible: No such file or directory. Permission denied (publickey). lost connection

Both my myAmazonkey.pem and phpMyAdmin-3.4.5-all-languages.tar.gz are in Downloads, so then I tried

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

and the error I got: Warning: Identity file /User/Hello_Kitty22/Downloads/myAmazonkey.pem not accessible: No such file or directory. Permission denied (publickey). lost connection

Can anyone please tell me how to fix my problem?

p.s. there is a similar post: https://stackoverflow.com/questions/6558080/scp-secure-copy-to-ec2-instance-without-password but it doesn't answer my question.

Amazon Ec2 Solutions


Solution 1 - Amazon Ec2

Try specifying the user to be ec2-user, e.g.

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

See Connecting to Linux/UNIX Instances Using SSH.

Solution 2 - Amazon Ec2

second directory is your target destination, don't use server name there. In other words, you don't need to mention machine name for the machine you're currently in.

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

-r if it's a directory.

Solution 3 - Amazon Ec2

Your key must not be publicly viewable for SSH to work. Use this command if needed:

chmod 400 yourPublicKeyFile.pem

Solution 4 - Amazon Ec2

You should be on you local machine to try the above scp command.

On your local machine try:

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

Solution 5 - Amazon Ec2

Here are the details of what works for an EC2 instance:

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

Few notes for beginning:

  1. Note the spaces between the three parameters given after the -i
  2. scp stands for secure copy protocol. Knowing the words makes it easier to remember the command.
  3. -i dictates that you need to give the .pem file as the next param. If there is no -i, than you do not need a .pem.
  4. Note the :~ at the end of the destination for the EC2 instance.

Solution 6 - Amazon Ec2

I had exactly same problem, my solution was to

scp -i /path/pem -r /path/file/ ec2-user@public aws dns name: (leave it blank here)

once you done this part, get into ssh server and mv file to desired location

Solution 7 - Amazon Ec2

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

Solution 8 - Amazon Ec2

Send file from Local to Server:

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

Download file from Server to Local:

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

Solution 9 - Amazon Ec2

This just worked for me. I used a combination of two other answers to this question.

scp -i /Users/me/documents/myKP.pem -r /Users/me/desktop/testDir \
       [email protected]:/home/ec2-user/remoteDir

The "[email protected]" is copy-and-pasted from your ec2 instance's public DNS.

Solution 10 - Amazon Ec2

Below SCP format works for me

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

SampleFile.txt: It will be the path from your root directory(In my case, /home/ubuntu). in my case the file which I wanted to download was at /var/www

SampleFile2.txt: It will be path of your machine's root path(In my case, /home/MyPCUserName)

So, I have to write below command

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

Solution 11 - Amazon Ec2

The process of using SCP to copy files from a local machine to an AWS EC2 Linux instance is covered step-by-step (including the points mentioned below) in this video.

To correct this particular issue with using SCP:

  1. You need to specify the correct Linux user. From Amazon:

    • For Amazon Linux, the user name is ec2-user.
    • For RHEL, the user name is ec2-user or root.
    • For Ubuntu, the user name is ubuntu or root.
    • For Centos, the user name is centos.
    • For Fedora, the user name is ec2-user.
    • For SUSE, the user name is ec2-user or root.
    • Otherwise, if ec2-user and root don't work, check with your AMI provider.
  2. Your private key must not be publicly visible. Run the following command so that only the root user can read the file.

    chmod 400 /path/to/yourKeyFile.pem
    

Solution 12 - Amazon Ec2

  1. Public DNS

    scp -i /path/my-key-pair.pem /path/my-file.txt ec2-user@my-instance-public-dns-name:path/
    
  2. (IPv6)

     scp -i /path/my-key-pair.pem /path/my-file.txt ec2-user@\[my-instance-IPv6-address\]:path/
    

Solution 13 - Amazon Ec2

> SCP Commend

Send File from Local To Remote Server

sudo scp -i ../Downloads/new_bb_key.pem ./dump.zip [email protected]:~/.

Send File from Remote Server To Local

sudo scp -i ~/Downloads/new_bb_key.pem [email protected]:/home/ubuntu/LatestDBdump.zip Downloads/

Solution 14 - Amazon Ec2

Check the permissions on the .pem file...openssh usually doesn't like world-readable private keys, and will fail (iir, scp doesn't do a great job of providing this feedback to the user).

Can you simply ssh with that key to your AWS host?

Solution 15 - Amazon Ec2

First you should change the mode of .pem file from read and write mode to read only mode. This can be done just by a single command in terminal sudo chmod 400 your_public_key.pem

Solution 16 - Amazon Ec2

I tried all the suggestions mentioned above and nothing worked. I terminated the current instance, launched another one and repeated the same exact process. This time no problems. Sometimes it might be the remote ami's fault.

Solution 17 - Amazon Ec2

I would use:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHoKy22View Question on Stackoverflow
Solution 1 - Amazon Ec2W.P. McNeillView Answer on Stackoverflow
Solution 2 - Amazon Ec2Syed PriomView Answer on Stackoverflow
Solution 3 - Amazon Ec2CastelmagerView Answer on Stackoverflow
Solution 4 - Amazon Ec2DV DasariView Answer on Stackoverflow
Solution 5 - Amazon Ec2ForrestView Answer on Stackoverflow
Solution 6 - Amazon Ec2Mustafa KahramanView Answer on Stackoverflow
Solution 7 - Amazon Ec2PrafullView Answer on Stackoverflow
Solution 8 - Amazon Ec2Viraj WadateView Answer on Stackoverflow
Solution 9 - Amazon Ec2Norman DavisView Answer on Stackoverflow
Solution 10 - Amazon Ec2Vatsal ShahView Answer on Stackoverflow
Solution 11 - Amazon Ec2blackHoleDetectorView Answer on Stackoverflow
Solution 12 - Amazon Ec2Umar AsgharView Answer on Stackoverflow
Solution 13 - Amazon Ec2Shashwat GuptaView Answer on Stackoverflow
Solution 14 - Amazon Ec2Bryan StensonView Answer on Stackoverflow
Solution 15 - Amazon Ec2Shravan40View Answer on Stackoverflow
Solution 16 - Amazon Ec2Marie D.View Answer on Stackoverflow
Solution 17 - Amazon Ec2user1738344View Answer on Stackoverflow