68

我有一个 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/

谢谢,

4

5 回答 5

110

我刚刚收到同样的错误。我一直能够通过以下方式进行 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/

这似乎奏效了。

于 2013-04-24T22:57:09.300 回答
16

以下是我使用的并且有效。源是 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/
于 2014-02-08T20:17:04.503 回答
11

在经历了一点痛苦之后,我相信这会有所帮助:

我正在使用以下命令,它可以正常工作:

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]

第二个考虑:

通过以下命令创建公钥,用于相关服务器之间的通信。她将与亚马逊提供的不同。

ssh-keygen -t rsa

不要忘记在 /etc/ssh/sshd_config(UBUNTU 和 CENTOS)中启用目标服务器的权限。

将文件从一个 EC2 实例同步到另一个

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

使用 -v 选项获得详细信息并更好地识别错误。

第三考虑

如果两台服务器都在 EC2 上,请通过安全组进行限制

在安全组 Server Destination 中:

入站:源/TCP 端口 22/源服务器的 IP 安全(或组名)

于 2013-07-12T15:01:37.950 回答
11

将文件从本地机器复制到服务器

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/
于 2018-02-12T09:14:51.843 回答
2

这对我有用:

nohup rsync -zravu --partial --progress  -e "ssh -i xxxx.pem" ubuntu@xx.xx.xx.xx:/mnt/data   /mnt2/ &
于 2015-11-13T07:33:52.330 回答