Using scp to copy a file to Amazon EC2 instance?
Amazon Ec2TerminalCopyScpPublic KeyAmazon 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:~/.
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:
- Note the spaces between the three parameters given after the
-i
scp
stands for secure copy protocol. Knowing the words makes it easier to remember the command.-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
.- 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:
-
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.
-
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
-
Public DNS
scp -i /path/my-key-pair.pem /path/my-file.txt ec2-user@my-instance-public-dns-name:path/
-
(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'