Ruby Net::SFTP的公钥/私钥身份验证
我很难找到为SFTP身份验证指定密钥的文档 我想要一些类似于:Ruby Net::SFTP的公钥/私钥身份验证,ruby,net-sftp,Ruby,Net Sftp,我很难找到为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|
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
Net::SFTP.start
将其选项
散列直接传递给Net::SSH.start
,因此我们应该这样做。它列出了三个看起来相关的选项:
=>用于公钥和基于主机的身份验证的私钥文件名数组:密钥
=>字符串数组,数组中的每个元素都是PEM格式的原始私钥:key_data
=>设置为:仅密钥
以仅使用true
和密钥
参数中的私钥,即使ssh代理提供了更多标识。此选项适用于ssh代理提供许多不同标识的情况密钥数据
Net::SFTP.start(ftp_host, user,
key_data: [],
keys: "tmp/some-certs/privatekey.pem",
keys_only: true)
如果要使用SOME\u PRIVATE\u key
环境变量中的原始密钥数据,它应该如下所示:
Net::SFTP.start(ftp_host, user,
key_data: [ ENV["SOME_PRIVATE_KEY"] ],
keys: [],
keys_only: true)