Ruby 中使用 net-sftp 进行基于密钥的身份验证
我希望能够使用 SFTP 登录多个服务器并下载某些文件,以帮助在问题出现时进行调试。虽然我们可以使用客户端,但我们希望开始自动化流程以简化一切。
我的第一次尝试看起来像这样:
def download(files_to_download, destination_directory)
Net::SFTP.start(@server, @username, :password => @password) do |sftp|
files_to_download.each do |f|
local_path = File.join(destination_directory, File.basename(f))
sftp.download!(f, local_path)
end
end
end
虽然这有效,但这意味着我们需要密码。理想情况下,我想使用公钥身份验证,但是我在文档或在线中看不到任何对此的引用 - 这可能吗?
我不想使用 chilkat。
谢谢
I want to be able to use SFTP to login into a number of servers and download certain files to help debug issues as and when they arise. While we could use a client, we wanted to start automating the process to streamline everything.
My first attempt looks something like this:
def download(files_to_download, destination_directory)
Net::SFTP.start(@server, @username, :password => @password) do |sftp|
files_to_download.each do |f|
local_path = File.join(destination_directory, File.basename(f))
sftp.download!(f, local_path)
end
end
end
While this works, it means we need the password. Ideally, I want to be using public key authentication however I can't see any reference to this in the documentation or online - is this possible?
I would prefer not to use chilkat.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您想直接指定密钥(或其他 SSH 选项) 你可以先 打开一个 Net:: SSH 连接,然后从那里执行 SFTP 操作。
这也适用于 Net::SCP
If you want to directly specify the key (or other SSH options) you can first open a Net::SSH connection, and then do SFTP operations from there.
This also works for Net::SCP
这是自动完成的,只需上传您的公钥即可开箱即用。
It's automatically done, just upload your public key and should work out of the box.