【问题标题】:Rsync to Amazon Linux EC2 instance - Permission deniendRsync 到 Amazon Linux EC2 实例 - 权限被拒绝
【发布时间】:2016-03-07 14:59:14
【问题描述】:

只是为了运行测试,我想将图像文件从我的桌面放入我的实例文件夹之一。

我已经尝试过针对同一主题问题提供的解决方案: Rsync to Amazon Ec2 Instance

所以我试过了:

sudo rsync  -azv --progress -e "ssh -i ~/.ssh/MyKeyPair.pem" \ ~/Desktop/luffy.jpg  \ec2-user@xx.xx.xx.xxx:/home/ec2-user/myproject/mysite/mysite/media

~/.ssh/ 是 MyKeyPair.pem 所在的位置。实际上,要通过 ssh 进入,我首先要执行 cd ~/.ssh,然后运行 ​​ssh -i ... 命令。

但我收到此错误:

Warning: Identity file ~/.ssh/MyKeyPair.pem not accessible: No such file or directory.
Permission denied (publickey).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]

我在另一个问答页面上看到有人收到同样的错误报告,他通过 yum 安装 rsync 解决了这个问题。就我而言,它已经安装(版本 3.0.6)。

如果有人能提供帮助,我将不胜感激!

【问题讨论】:

    标签: amazon-ec2 rsync permission-denied key-pair


    【解决方案1】:
    1. 要将本地文件复制到 EC2,rsync 命令应该在您的本地系统上运行,而不是在 EC2 实例上。

    2. 如果波浪号 (~) 在引号内,它不会被 shell 扩展至您的主目录。尝试改用 $HOME。

    3. 如果您在本地使用 sudo,那么您可能希望在远程使用 sudo(例如,复制文件所有权)。这可以通过适当的--rsync-path 选项来完成。

    4. 我建议包括选项-SHAX 以更紧密地保留目标系统上的文件。

    5. 如果“media”应该是一个子目录,那么尾部斜杠将有助于避免一些奇怪的事情,如果它当前不存在。

    最终结果:

    sudo rsync  -azv -SHAX --progress -e "ssh -i $HOME/.ssh/MyKeyPair.pem" \
      --rsync-path "sudo rsync" \
      ~/Desktop/luffy.jpg \
      ec2-user@xx.xx.xx.xxx:/home/ec2-user/myproject/mysite/mysite/media/
    

    这是一篇旧文章,我在其中写了有关将 rsync 与 EC2 实例一起使用的文章。对于 Amazon Linux,您可以将“ubuntu”替换为“ec2-user”。

    http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync

    如果这不能解决您的问题,请提供更多详细信息,说明您在哪里运行的确切命令以及您收到的确切错误消息。

    【讨论】:

    • 嗨@Eric,感谢您的尝试!但是使用 $HOME 似乎也不起作用。我认为这是因为它将 $HOME 作为 /home/ec2-user/ --> 不是我的“macbook home”而是我的“ec2 instance home”。错误消息保持不变,除了第一行,也就是下面的那一行。 Warning: Identity file /home/ec2-user/.ssh/MyKeyPair.pem not accessible: No such file or directory.
    • @kuro42 如果 $HOME 扩展到 /home/ec2-user,那么您正在 EC2 实例上运行该命令。如果您想将文件从本地计算机复制到 EC2 实例,请在本地计算机上尝试。
    • 就是这样! :D 在我的本地系统上运行命令有效(不需要 sudo 顺便说一句)。谢谢!!
    • @kuro42 如果您在两边都使用 sudo(答案扩展为包含示例),那么您可以保留 EC2 实例上的文件所有权。为了使其正常工作,您需要在本地和远程系统上拥有相同的用户。
    【解决方案2】:

    太棒了!这需要稍作修改。删除了sudo

    sudo rsync -azv --progress -e "ssh -i $HOME/<path_to>" \
      --rsync-path "rsync" \
      <source> \
      <target>
    

    【讨论】:

      猜你喜欢
      • 2016-08-04
      • 2016-02-17
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 2013-09-04
      • 2017-07-03
      相关资源
      最近更新 更多