首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ruby中使用net-sftp实现基于密钥的认证

在Ruby中使用net-sftp实现基于密钥的认证
EN

Stack Overflow用户
提问于 2009-11-09 21:07:36
回答 2查看 9.3K关注 0票数 6

我希望能够使用SFTP登录到一些服务器,并下载某些文件,以帮助调试问题时,他们出现了。虽然我们可以使用客户端,但我们希望开始自动化该过程,以简化所有事情。

我的第一次尝试是这样的:

代码语言:javascript
复制
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。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-09-24 06:24:37

如果您想要直接指定密钥(或SFTP ),您可以首先使用open a Net::SSH connection,然后从那里执行SFTP操作。

代码语言:javascript
复制
Net::SSH.start("localhost", "user", keys: ['keys/my_key']) do |ssh|
  ssh.sftp.upload!("/local/file.tgz", "/remote/file.tgz")
  ssh.exec! "cd /some/path && tar xf /remote/file.tgz && rm /remote/file.tgz"
end

这也适用于Net::SCP

代码语言:javascript
复制
Net::SSH.start('localhost', 'user', keys: ['keys/my_key'] ) do |ssh|
  ssh.scp.download("/local/file.txt", "/remote/file.txt")
end
票数 11
EN

Stack Overflow用户

发布于 2009-11-09 21:48:10

这是自动完成的,只需上传您的公钥,应该可以开箱即用。

使用公钥/私钥进行

连接

公钥/私钥始终在显式密码身份验证之前尝试,即使您提供了密码也是如此。因此,如果只想使用公钥/私钥身份验证,只需从参数列表中删除密码即可。如果您能够成功地获得会话句柄,那么您的密钥设置就正确了!

  • http://net-ssh.rubyforge.org/ssh/v1/chapter-2.html#s2
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1700882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档