题
这很奇怪。我在主机机器上添加了公共密钥。我可以简单地运行
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,但这是。
不隶属于 StackOverflow