这很奇怪。我在主机上添加了我的公钥。我可以简单地运行
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)我是不是漏掉了什么?
感谢你的帮助。
发布于 2011-01-17 19:22:58
好的,几天后,当我回过头来看这个问题时,我很快就成功了,我做了以下调整:
Net::SSH.start("<host>", "<user>", :port => "<port>") { |ssh|
puts "logged in"
puts ssh.exec!("ls -l")
} rescue puts "failed to connect."因此,与前一个不同的是用户名,在本例中,它作为第二个参数传递,而不是像选项键一样传递。
发布于 2011-01-10 22:30:32
您可能需要提供SSH密钥的位置,或者与您在SSH.start参数中提供的用户名一起使用的密码。对于键,您需要将映射值作为数组:keys => ["path_to_key"]传递。我不确定为什么api是这样设置的,但它是这样的。
https://stackoverflow.com/questions/4646395
复制相似问题