2011-01-10 121 views
2

這很奇怪。我在主機上添加了公鑰。我可以簡單地運行無法通過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) 

有什麼我錯過這裏?

感謝您的幫助。

+0

你有什麼建議? :) – intellidiot 2011-01-10 11:49:02

+0

單擊您接受的問題答案上的「打勾」。它增加了那些懶得回答你的問題的人的聲譽。 – 2011-01-10 14:14:43

回答

2

好了,現在過了幾天,當我回頭看這個問題,我有以下的調整急功近利:

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

因此,與前一個區別是用戶名,在這種大小寫作爲第二個參數而不是像選項鍵那樣傳遞。

0

您可能需要提供您的SSH密鑰的位置,或使用您在SSH.start參數中提供的用戶名使用的密碼。對於鍵,您需要將映射值作爲數組:keys => ["path_to_key"]傳遞。我不確定爲什麼api是這樣設置的,但它是。

相關問題