2017-06-06 79 views
1

SFTP認証用の鍵を指定するためのドキュメントを見つけるのに問題があります。Ruby Net :: SFTPの公開鍵/秘密鍵の認証

export SOME_PRIVATE_KEY="$(cat tmp/some-certs/privatekey.pem)" 

# then somewhere in the code 
private_key = OpenSSL::PKey::RSA.new(ENV['SOME_PRIVATE_KEY']) 

Net::SFTP.start(ftp_host, user, key: private_key) do |sftp| 
    sftp.dir.entries('/path/to/folder').each do |remote_file| 
    # ... 
    end 
end 

答えて

1

Net::SFTP.startNet::SSH.startに直接そのoptionsハッシュを渡すので、我々がすべきlook to its documentation

のようなものを持っていると思います。それは、関連見える3つのオプションを示しています:

  • :keys =>公開に使用する秘密鍵のファイル名の配列およびホストベースの認証
  • :key_data =>の各要素を持つ文字列の配列、配列はPEM形式の生の秘密鍵です。
  • :keys_only => に設定すると、ssh-agentがより多くのアイデンティティを提供しても、keyskey_dataの秘密鍵のみを使用できます。このオプションは、ssh-agentが多くの異なる識別子を提供する状況を想定しています。

related questionへの答えは、すべての3つ使用する必要があることを示唆している:あなたが代わりにSOME_PRIVATE_KEY環境変数からの生の鍵データを使用したい場合は、それが見えるべき

Net::SFTP.start(ftp_host, user, 
    key_data: [], 
    keys: "tmp/some-certs/privatekey.pem", 
    keys_only: true) 

をこのように:

Net::SFTP.start(ftp_host, user, 
    key_data: [ ENV["SOME_PRIVATE_KEY"] ], 
    keys: [], 
    keys_only: true) 
関連する問題