我希望能夠使用SFTP登錄到許多服務器並下載某些文件,以便在出現問題時幫助您進行調試。雖然我們可以使用客戶端,但我們希望開始自動化流程以簡化所有內容。在Ruby中使用net-sftp進行基於密鑰的認證
我第一次嘗試看起來是這樣的:
def download(files_to_download, destination_directory)
Net::SFTP.start(@server, @username, :password => @password) do |sftp|
files_to_download.each do |f|
local_path = File.join(destination_directory, File.basename(f))
sftp.download!(f, local_path)
end
end
end
雖然這個工作,它意味着我們需要的密碼。理想情況下,我想使用公共密鑰身份驗證,但是我無法在文檔或在線查看任何對此的引用 - 這可能嗎?
我不想使用奇爾卡特。
謝謝
真棒!謝謝。 我試過了,現在我得到了: c:/ruby/lib/ruby/gems/1.8/gems/net-sftp-2.0.2/lib/net/sftp.rb:43:在'start' :und 已定義的方法'shutdown!' for nil:NilClass(NoMethodError) from C:/sourcecode/log_downloader/sftp.rb:7:在'download' from C:/sourcecode/log_downloader/sftp.rb:24 從SSH日誌看來,它看起來像它不會執行接受公鑰,請求籤名步驟,winscp在那裏要求我接受密鑰?或者客戶是否幫我照顧過? – 2009-11-09 14:17:07
這是否也適用於'Net :: SFTP'?還是隻有'Net :: SSH'? – 2012-08-07 21:36:53
是的,這也適用於Net :: SFTP。如果您使用Net :: SSH/SFTP v2,則可以將私鑰作爲key_data選項傳遞給.start,如果將它保存到文件中對您來說不是一個好選擇。 – Ari 2013-01-11 22:52:02