首页 > 解决方案 > 如何在 ruby​​ on rails 中的 Net::sftp 中使用 PRIVATE RSA 密钥文件

问题描述

我正在尝试与我的 azure 存储建立 sftp 连接。我有一个以开头的私钥文件

private_key = '-----BEGIN RSA PRIVATE KEY-----\nMnx......'

使用此 private_key,我尝试建立连接,例如

Net::SFTP.start('<remote-ip>', 'username', 
        :password => 'password', 
        :key_data => [ private_key ],
        keys_only: true,
        verify_host_key: :never) do |sftp|
          data = sftp.download!("/somefile.txt")
          p data

end

当我尝试使用这个密钥文件时,我遇到了一个异常

#<OpenSSL::PKey::PKeyError: Could not parse PKey: no start line>

但是,当我使用以以下格式开头的密钥文件时

-----BEGIN OPENSSH PRIVATE KEY-----

一切正常。

但我想使用新的私钥。这段代码会有什么问题?有没有办法指定要使用的私钥文件的类型?

标签: ruby-on-railsazurersaprivate-keynet-sftp

解决方案


做这个:

在此操作调用之前,检查private_key变量是否包含-----BEGIN OPENSSH PRIVATE KEY-----行。如果不是,则将其添加到 private_key 变量中,或者简而言之,将 private_key 设置为您的 start 方法接受的格式。


推荐阅读