无法通过net / ssh连接远程主机

时间:2011-01-10 11:37:37

标签: ruby net-ssh

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

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

只打开远程shell。我甚至可以在同一台机器上运行我的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)

这里有什么我想念的吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

好的,现在几天后我回头看看问题,我通过以下调整取得了快速的成功:

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

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

答案 1 :(得分:0)

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