ruby - 使用 Ruby 中的 net-sftp 基于 key 的身份验证

标签 ruby ssh sftp ironruby

我希望能够使用 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。

谢谢

最佳答案

如果你想直接指定键(或other SSH options)你可以先open a Net::SSH connection ,然后从那里执行 SFTP 操作。

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

Net::SSH.start('localhost', 'user', keys: ['keys/my_key'] ) do |ssh|
  ssh.scp.download("/local/file.txt", "/remote/file.txt")
end

关于ruby - 使用 Ruby 中的 net-sftp 基于 key 的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1700882/

相关文章:

javascript - Google Scribe 是如何工作的?

macos - OSX 相当于 WinSCP 的全自动本地-远程 SFTP 同步?

linux - 将 SFTP 私钥从一台服务器复制到另一台服务器

java - 如何使用 JSch 判断 SFTP 上传是否成功

ruby-on-rails - 我应该在我的新网络应用程序中使用 Ruby 1.9.2 吗?

ruby - 在 Ubuntu 中更改单个窗口的颜色

ruby-on-rails - RSpec 找不到我的 Controller 未初始化的常量

ssh - 如何通过scp命令通过跳机将文件复制到远程计算机

docker - 建立从 Jenkins 容器到 SSH 服务器容器的 SSH 连接,我可以用密码登录建立但不能用私钥建立

仅在远程运行时尝试导入包时出现 python SyntaxError