2015-06-15 167 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