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

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)

我这里有什么想念吗?

感谢你的帮助。

有帮助吗?

解决方案

好的,几天后,当我回顾这个问题时,我对以下调整取得了迅速的成功:

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

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

其他提示

您可能需要提供SSH密钥的位置,或者与SSH.SSH.START参数中提供的用户名一起使用的密码。对于键,您需要将地图值作为数组传递 :keys => ["path_to_key"]. 。我不确定为什么会以这种方式设置API,但这是。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top