2015-06-15 171 views
1

我一直在嘗試將我的應用程序連接到NET :: SSH gem的遠程服務器,但沒有成功。這個問題似乎源於我需要使用私鑰文件來驗證登錄名的事實。Ruby NET :: SSH - 無法連接到遠程服務器

require 'net/ssh' 


def SSH(host, user, psw, keys, cmd) 
    Net::SSH.start(host, 
        user, 
        :password => psw, 
        :host_key => "ssh-rsa", 
        :encryption => ["blowfish-cbc","aes256-cbc"], 
        :keys => keys, 
        :verbose => :debug, 
        :auth_methods => ["publickey","password"] 
       ) do|ssh| 

    @result = ssh.exec!(cmd) 
    puts @result 
    end 
    return @result 
end 

調試輸出給我的錯誤:

Could not load private key file `C:/path_to_key/key.ppk': ArgumentError (Could not parse PKey)

我已經看到了這個錯誤與No start line附加不過沒有發現任何建議解決方法,此的許多例子。我甚至卸載並重新安裝了NET :: SSH gem。

我沒有問題連接通過puTTY/WinSCP與相同的憑據,所以我敢肯定沒有遠程身份驗證問題。

任何幫助讚賞

回答

0

我的問題是私鑰的格式。對於一些(仍然無法解釋)的原因,Ruby不喜歡.ppk擴展。

爲了避開它

  1. ssh-keygen -t rsa(或DSA,如果你想更安全的格式)上的遙控盒生成公鑰/私鑰對。給它一個放置兩個鍵的文件夾。

  2. 添加公共密鑰的〜/ .ssh/authorized_keys文件

  3. 移動私鑰對本地機器WinSCP並用它作爲密鑰或key_data淨:: SSH

0

它可以是SSLv3的問題。重新生成您的SSL證書並重試。

+0

當然,如果這是否會影響通過puTTY進行連接的問題? – kaybee99