【问题标题】:Unable to connect remote host through net/ssh无法通过 net/ssh 连接远程主机
【发布时间】:2011-01-17 19:22:57
【问题描述】:

这很奇怪。我在主机上添加了我的公钥。我可以简单地运行

ssh -p <port> -l <username> hostt.com

它只是打开远程外壳。我什至可以在同一台机器上运行我的 capistrano 脚本进行部署。但是当我尝试连接下面这个简单的 ruby​​ 脚本时

require 'rubygems'
require 'net/ssh'

Net::SSH.start("hostt.com", 
               :port => <port>, 
               :username => <username>
              ) do |session|
  puts session.pwd
end

它立即拒绝,但有以下例外:

`initialize': Connection refused - connect(2) (Errno::ECONNREFUSED)

这里有什么我遗漏的吗?

感谢您的帮助。

【问题讨论】:

  • 点击您接受的问题答案上的“勾号”。它增加了那些愿意回答您问题的人的声誉。
  • 我没有意识到这一点。谢谢阿迪亚。

标签: ruby net-ssh


【解决方案1】:

好的,几天后我回顾了这个问题,我通过以下调整获得了快速成功:

Net::SSH.start("<host>", "<user>", :port => "<port>") { |ssh|
  puts "logged in"
  puts ssh.exec!("ls -l")  
} rescue puts "failed to connect."

因此与前一个的区别在于用户名,在这种情况下,它作为第二个参数而不是作为选项键传递。

【讨论】:

    【解决方案2】:

    您可能需要提供 SSH 密钥的位置,或与您在 SSH.start 参数中提供的用户名一起使用的密码。对于键,您需要将映射值作为数组 :keys =&gt; ["path_to_key"] 传递。我不确定为什么要这样设置 api,但确实如此。

    【讨论】:

    • 感谢您的回答 Jed,但这并不能解决问题 :(
    猜你喜欢
    • 1970-01-01
    • 2017-08-08
    • 2017-02-08
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 2020-02-15
    相关资源
    最近更新 更多