Net::SSH 连接从内部 resque 作业失败

发布于 2024-09-24 05:33:38 字数 508 浏览 11 评论 0原文

我有一个设置创建 EC2 实例的应用程序 - 我有一个 resque 任务,一旦服务器启动并运行,它将配置服务器(通过 ssh):

    Net::SSH.start(server.dns_name, 'root', :keys => ['~/.ssh/testkey.pem'], :paranoid => false, :verbose => :debug) do |ssh|
         result = ssh.exec!("ls -l")
         puts result
    end

我收到错误:

*** (Job{serverbuild} | ServerBuilder | [22]) failed: #<Errno::ECONNREFUSED: Connection refused - connect(2)>

如果我从 irb 或我的 Rails 应用程序运行此任务,它会连接很好。有什么想法吗?

I have an app that sets creates EC2 instances - I have a resque task that will configure the server (via ssh) once it's up and running:

    Net::SSH.start(server.dns_name, 'root', :keys => ['~/.ssh/testkey.pem'], :paranoid => false, :verbose => :debug) do |ssh|
         result = ssh.exec!("ls -l")
         puts result
    end

I get an error:

*** (Job{serverbuild} | ServerBuilder | [22]) failed: #<Errno::ECONNREFUSED: Connection refused - connect(2)>

If I run this from irb, or from my rails app, it's connects just fine. Any thoughts?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

零時差 2024-10-01 05:33:38

这是一个计时问题 - EC2 实例在接受 ssh 请求之前已“启动”。我在 20 秒内重试(最多 5 次)再次重试该错误。现在工作。

  begin
     Net::SSH.start(server.dns_name.to_s, 'root', :keys => ['/Users/stevebrewer/.ssh/testkey.pem'], :paranoid => false) do |ssh|
       result = ssh.exec!("ls -la")
       puts result
     end
  rescue
     if(retries < 5)
       Resque.enqueue_at(20.seconds.from_now, ServerBuilder, server_id, retries + 1)
     end
  end

It's a timing issue - EC2 instances are "up" before the will accept ssh requests. I rescued the error retried again in 20 seconds (up to 5 times). working now.

  begin
     Net::SSH.start(server.dns_name.to_s, 'root', :keys => ['/Users/stevebrewer/.ssh/testkey.pem'], :paranoid => false) do |ssh|
       result = ssh.exec!("ls -la")
       puts result
     end
  rescue
     if(retries < 5)
       Resque.enqueue_at(20.seconds.from_now, ServerBuilder, server_id, retries + 1)
     end
  end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文