【问题标题】:Transferring Files between two EC2 Instances in the same region在同一区域的两个 EC2 实例之间传输文件
【发布时间】:2014-10-13 18:48:03
【问题描述】:

我有 2 个运行 Ubuntu 14.04 的 EC2 实例,我需要弄清楚如何将文件从一个实例传输到另一个实例。我阅读了来自亚马逊的常见问题解答,它说如果我使用私有 IP,我可以做到这一点而不会产生任何额外费用,但我不知道如何使用它来传输文件。

现在我使用 scp 协议来执行此操作 -

scp -i ~/Path-To-Key-File/AAA.gem /path/file  ec2-user@<Elastic IP>:/path/file

我尝试用私有 IP 替换弹性 IP,但它不起作用。我在这里做错了吗?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 scp ubuntu-14.04


    【解决方案1】:

    这个问题是关于.pem 文件的身份验证问题。但是在某些情况下,不经过身份验证访问可能会有所帮助。在这里,您将授权另一台机器。

    说,你喜欢 sshscp 从 machine-1 到 machine-2。

    在机器 1 中

    • 检查 USER_HOME/.ssh/ 中是否有公钥文件 (id_rsa.pub)。如果没有,请使用ssh-keygen -t rsa 命令生成它。

    在机器 2 中

    • /etc/ssh/sshd_config 中取消注释PubkeyAuthentication yes
    • 从 machine-1 打开文件 USER_HOME/.ssh/authorized_keys 并附加 id_rsa.pub 文件的内容。

    现在您可以使用scp 复制它,如下所示:

    scp username_machine1@ip_machine1:/file/to/copy /destination/path
    

    你已经完成了。享受!!!

    详情请查看here

    【讨论】:

    • 如果两个实例位于不同的 aws 帐户中怎么办?
    • 对我来说,这个答案效果很好,只是 scp 命令没有按说明工作。对于 scp,我使用了scp username_machine1@ip_machine1:/file/to/copy /destination/path,一切正常。
    • 谢谢@H.Shad,我已经相应地更正了我的答案。
    【解决方案2】:

    将数据从本地复制到 ec2,将一个 ec2 复制到另一个(如果您是内部源 ec2)

    scp -ri <key file path> <copy data file location> <Public DNS (IPv4)>:~/ 
    
    Example:-
    scp -ri practical.pem serverdata1.tar
    ubuntu@ec2-xx-xxx-xxx-xxx.ap-southeast-1.compute.amazonaws.com:~/
    

    【讨论】:

      【解决方案3】:

      scp -i /home/centos/b1.pem centos@ip:/etc/httpd/conf/httpd.conf httpd.conf.j2

      【讨论】:

      • 欢迎来到 Stack Overflow!虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
      【解决方案4】:

      其实我想通了...我只需要将弹性IP替换为私有IP并正确配置安全组以允许实例通信!

      从机器 A 转移到机器 B

      我在机器 A 上运行这段代码

      scp -i ~/Path-To-Key-File/AAA.pem /path/file  ec2-user@<Private IP of Machine B>:/path/file
      

      对于安全组,我必须允许通过私有 IP 的 SSH 协议(来自机器 B)!!

      【讨论】:

      • 它要求输入密码,我知道但我想要一个单行,我该如何解决这个问题?
      • @KshitizShankar 我的权限被拒绝了,我申请了相同的安全组并且还使用了私有 IP,你能帮我解决这个问题吗?
      • 您能否解释一下如何实际配置安全组?如果没有那个解释,答案并没有太大帮助......
      • @BenMuller 转到您的 ec2 实例的安全组配置文件。点击“编辑入站规则”。从下拉列表中选择“ssh”。然后在“来源”中输入您的安全组的名称,然后单击自动完成弹出窗口。这应该允许在该安全组内的所有 ec2 实例之间进行传输 - 它为我做了!
      【解决方案5】:

      假设您的两个实例都是 EC2 linux 实例。

      假设您要将文件从第二个实例(ec2-2)传输到第一个实例(ec2-1),在ec2-1中运行的命令是:

      scp -i  /Path-To-Key-File-for-ec2-2/key.pem  ec2-user@Elastic-IP-of-ec2-2:/path/filename your/local-path-on-ec2-1/filename
      

      相应的讨论你可以找到here

      希望有帮助!!

      【讨论】:

      • 其实我需要能够通过在ec2-2上运行代码来将文件从ec2-2传输到ec2-1
      • 好的,要将文件从您的 ec2-2 实例发送到 ec2-2 上的 ec2-1,命令为:scp -i /Path-To-Key-File-for-ec2- 1/key.pem your/local-path-on-ec2-2/filename ec2-user@Elastic-IP-of-ec2-1:/path-on-ec2-1/filename
      • 抱歉,我编辑了评论,但没有更新——我的问题不在于复制文件,而在于使用弹性 IP 并为数据传输支付额外费用,而不是使用私有 IP 和这样做是免费的
      • 对,你可以用私有IP代替EIP。但是您需要通过相应实例的安全组允许这些 IP 的 ssh。
      • 如果两个实例位于不同的 aws 帐户中怎么办?我想从 Jenkins 工作区复制到另一个 ec2 目录。 ssm可以用吗?
      猜你喜欢
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      • 2018-01-15
      • 2012-03-01
      • 1970-01-01
      相关资源
      最近更新 更多