【问题标题】:Failing to connect to ec2 using Rubber无法使用 Rubber 连接到 ec2
【发布时间】:2014-04-20 04:12:58
【问题描述】:

我正在尝试使用 Rubber gem 将我的 rails 应用程序上传到亚马逊 ec2(我正在关注 Railscasts tutorial)。每次我运行cap rubber:create_staging 时,我都无法连接到服务器。我一直在尽一切可能让这个工作,但经过一整天的尝试,我想我会在这里发布发生的事情。

Andrews-MacBook-Pro:blog andrew$ cap rubber:create_staging
Respawning with 'bundle exec'
    triggering load callbacks
  * 2013-01-03 17:27:20 executing `rubber:init'
  * 2013-01-03 17:27:23 executing `rubber:create_staging'
Hostname to use for staging instance [production]: 
Roles to use for staging instance [apache,app,collectd,common,db:primary=true,elasticsearch,examples,graphite_server,graphite_web,graylog_elasticsearch,graylog_mongodb,graylog_server,graylog_web,haproxy,mongodb,monit,passenger,postgresql,postgresql_master,web,web_tools]: 
  * 2013-01-03 17:27:26 executing `rubber:create'
  * Security Group already in cloud, syncing rules: blog_production_production
  * Security Group already in cloud, syncing rules: blog_production_graylog_mongodb
  * Security Group already in cloud, syncing rules: blog_production_mongodb
  * Security Group already in cloud, syncing rules: blog_production_postgresql
  * Security Group already in cloud, syncing rules: blog_production_postgresql_master
  * Security Group already in cloud, syncing rules: blog_production_db
  * Security Group already in cloud, syncing rules: blog_production_app
  * Security Group already in cloud, syncing rules: blog_production_web
  * Security Group already in cloud, syncing rules: blog_production_haproxy
  * Security Group already in cloud, syncing rules: blog_production_elasticsearch
  * Security Group already in cloud, syncing rules: blog_production_monit
  * Security Group already in cloud, syncing rules: blog_production_common
  * Security Group already in cloud, syncing rules: blog_production_default
  * Security Group already in cloud, syncing rules: blog_production_graylog_elasticsearch
  * Security Group already in cloud, syncing rules: blog_production_apache
  * Security Group already in cloud, syncing rules: blog_production_passenger
  * Security Group already in cloud, syncing rules: blog_production_examples
  * Security Group already in cloud, syncing rules: blog_production_graphite_web
  * Security Group already in cloud, syncing rules: blog_production_graphite_server
  * Security Group already in cloud, syncing rules: blog_production_graylog_server
  * Security Group already in cloud, syncing rules: blog_production_collectd
  * Security Group already in cloud, syncing rules: blog_production_graylog_web
  * Security Group already in cloud, syncing rules: blog_production_web_tools
 ** Creating instance ami-eafa5883/m1.small/blog_production_default,blog_production_web,blog_production_web_tools,blog_production_production,blog_production_apache,blog_production_app,blog_production_passenger,blog_production_collectd,blog_production_common,blog_production_monit,blog_production_db,blog_production_postgresql,blog_production_postgresql_master,blog_production_elasticsearch,blog_production_examples,blog_production_graphite_server,blog_production_graphite_web,blog_production_graylog_elasticsearch,blog_production_graylog_mongodb,blog_production_mongodb,blog_production_graylog_server,blog_production_graylog_web,blog_production_haproxy/Default
 ** Instance production created: i-7b4f840a
Waiting for instances to start..........................
 ** Instance running, fetching hostname/ip data
  * 2013-01-03 17:28:37 executing `rubber:_allow_root_ssh'
  * executing "sudo -p 'sudo password: '  bash -l -c 'cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/'"
    servers: ["23.20.130.97"]
.... ** Failed to connect to 23.20.130.97, retrying
  * 2013-01-03 17:28:44 executing `rubber:_allow_root_ssh'
  * executing "sudo -p 'sudo password: '  bash -l -c 'cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/'"
    servers: ["23.20.130.97"]
. ** Failed to connect to 23.20.130.97, retrying
  * 2013-01-03 17:28:46 executing `rubber:_allow_root_ssh'
  * executing "sudo -p 'sudo password: '  bash -l -c 'cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/'"
    servers: ["23.20.130.97"]
. ** Failed to connect to 23.20.130.97, retrying
  * 2013-01-03 17:28:49 executing `rubber:_allow_root_ssh'
  * executing "sudo -p 'sudo password: '  bash -l -c 'cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/'"
    servers: ["23.20.130.97"]

etc

然后它似乎进入了一个无限循环并尝试像上面那样每隔几分钟连接到服务器。

编辑:我终于通过在我的本地机器上重新安装 ruby​​ + gems 解决了这个问题。仍然不确定是什么原因造成的。

【问题讨论】:

  • 您可以通过 SSH 手动连接到 ec2 实例吗?
  • @regulatethis 是的,我可以。正如教程所说,我还将 pem 密钥下载到 ~/.ec2/ 目录中(它在那里没有扩展名,并且具有 .pub 扩展名)。
  • 我有同样的错误...当我尝试 ssh 到服务器时,它说用 'ubuntu' 用户而不是 'root' 重试这样我就可以登录了。然后我改变了我的用户到ubuntu“设置:用户,'ubuntu'”。但即使这样,错误仍然存​​在......所以如果有人可以描述这里发生的事情,那么请这样做。

标签: ruby-on-rails ruby amazon-ec2


【解决方案1】:

这实际上是因为当您在 EC2 上创建实例时,即使创建了实例(您可以在 AWS 管理控制台上看到绿灯),仍然需要一些时间来传播 IP 地址才能从您的部署机器。

解决方案实际上是等待几分钟,因为它最终会连接。

【讨论】:

    【解决方案2】:

    我遇到了类似的错误,但通过重命名我的私钥来修复它,因此它没有 .pem 扩展名。橡胶常见问题解答对此做了一些参考。

    https://github.com/rubber/rubber/wiki/FAQ

    在我进行此更改后,它起作用了。

    【讨论】:

      猜你喜欢
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 2014-02-05
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多