简体   繁体   中英

Rsync to Amazon Ec2 Instance

I have an EC2 instance running and I am able to SSH into it.

However, when I try to rsync, it gives me the error Permission denied (publickey).

The command I'm using is:

rsync -avL --progress -e ssh -i ~/mykeypair.pem ~/Sites/my_site/* root@ec2-XX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com:/var/www/html/

I also tried

rsync -avz ~/Sites/mysite/* -e "ssh -i ~/.ssh/id_rsa.pub" root@ec2-XX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com:/var/www/html/

Thanks,

I just received that same error. I had been consistently able to ssh with:

ssh -i ~/path/mykeypair.pem \
ubuntu@ec2-XX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com

But when using the longer rsync construction, it seemed to cause errors. I ended up encasing the ssh statement in quotations and using the full path to the key. In your example:

rsync -avL --progress -e "ssh -i /path/to/mykeypair.pem" \
       ~/Sites/my_site/* \ 
       root@ec2-XX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com:/var/www/html/

That seemed to do the trick.

After suffering a little bit, I believe this will help:

I am using the below command and it has worked without problems:

rsync -av --progress -e ssh /folder1/folder2/* root@xxx.xxx.xxx.xxx:/folder1/folder2

First consideration:

Use the --rsync-path

I prefer in a shell script:

#!/bin/bash

RSYNC = /usr/bin/rsync

$RSYNC [options] [source] [destination]

Second consideration:

Create a publick key by command below for communication between the servers in question. She will not be the same as provided by Amazon.

ssh-keygen -t rsa

Do not forget to enable permission on the target server in /etc/ssh/sshd_config (UBUNTU and CENTOS).

Sync files from one EC2 instance to another

http://ask-leo.com/how_can_i_automate_an_sftp_transfer_between_two_servers.html

Use -v option for verbose and better identify errors.

Third Consideration

If both servers are on EC2 make a restraint by security group

In the security group Server Destination:

inbound: Source / TCP port 22 / IP Security (or group name) of the source server

Below is what I used and it worked. Source was ec2 and target was home machine.

 sudo rsync  -azvv -e "ssh -i /home/ubuntu/key-to-ec2.pem" ec2-user@xx.xxx.xxx.xx:/home/ec2-user/source/ /home/ubuntu/target/

copy file from local machine to server

rsync -avz -e "ssh -i /path/to/key.pem" /path/to/file.txt  <username>@<ip/domain>:/path/to/directory/

copy file from server to local machine

rsync -avz -e "ssh -i /path/to/key.pem" <username>@<ip/domain>:/path/to/directory/file.txt  /path/to/directory/

这对我有用:

nohup rsync -zravu --partial --progress  -e "ssh -i xxxx.pem" ubuntu@xx.xx.xx.xx:/mnt/data   /mnt2/ &

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM