我有一个EC2实例正在运行,我可以通过SSH进入它。
然而,当我尝试rsync时,它给出了错误Permission denied(publickey)。
我正在使用的命令是:
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/
我也试过
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/
谢谢,
答案 0 :(得分:74)
我刚收到同样的错误。我一直能够与ssh:
ssh -i ~/path/mykeypair.pem \
ubuntu@ec2-XX-XXX-XXX-XXX.us-west-2.compute.amazonaws.com
但是当使用较长的 rsync 构造时,它似乎会导致错误。我最终将ssh语句包含在引号中并使用键的完整路径。在您的示例中:
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/
这似乎可以解决问题。
答案 1 :(得分:10)
经过一番苦苦之后,我相信这会有所帮助:
我正在使用以下命令,它没有问题:
rsync -av --progress -e ssh /folder1/folder2/* root@xxx.xxx.xxx.xxx:/folder1/folder2
首先考虑:
使用--rsync-path
我更喜欢shell脚本:
#!/bin/bash
RSYNC = /usr/bin/rsync
$RSYNC [options] [source] [destination]
第二个考虑因素:
通过下面的命令创建一个publick键,用于相关服务器之间的通信。她与亚马逊提供的不一样。
ssh-keygen -t rsa
不要忘记在/ etc / ssh / sshd_config(UBUNTU和CENTOS)中启用目标服务器的权限。
Sync files from one EC2 instance to another
http://ask-leo.com/how_can_i_automate_an_sftp_transfer_between_two_servers.html
使用-v选项可以获得详细信息并更好地识别错误。
第三次考虑
如果两个服务器都在EC2上,请通过安全组进行限制
在安全组服务器目标中:
入站: 源/ TCP端口 22 /源服务器的IP安全性(或组名)
答案 2 :(得分:10)
以下是我使用过的内容。来源是ec2,目标是家用机器。
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/
答案 3 :(得分:3)
将文件从本地计算机复制到服务器
rsync -avz -e "ssh -i /path/to/key.pem" /path/to/file.txt <username>@<ip/domain>:/path/to/directory/
将文件从服务器复制到本地计算机
rsync -avz -e "ssh -i /path/to/key.pem" <username>@<ip/domain>:/path/to/directory/file.txt /path/to/directory/
答案 4 :(得分:2)
这对我有用:
nohup rsync -zravu --partial --progress -e "ssh -i xxxx.pem" ubuntu@xx.xx.xx.xx:/mnt/data /mnt2/ &