Ben*_*all 6 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
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但这意味着我们需要密码.理想情况下,我想使用公钥认证,但我在文档或在线中看不到任何对此的引用 - 这可能吗?
我宁愿不使用chilkat.
谢谢
Pat*_*gen 11
如果要直接指定密钥(或其他SSH选项),可以先打开Net :: SSH连接,然后从那里执行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
Run Code Online (Sandbox Code Playgroud)
这也适用于Net :: SCP
Net::SSH.start('localhost', 'user', keys: ['keys/my_key'] ) do |ssh|
ssh.scp.download("/local/file.txt", "/remote/file.txt")
end
Run Code Online (Sandbox Code Playgroud)
它会自动完成,只需上传您的公钥即可开箱即用.
使用公钥/私钥连接
即使您提供密码,也始终在显式密码身份验证之前尝试公钥/私钥.因此,如果您只想使用公钥/私钥验证,只需从参数列表中删除密码即可.如果您可以成功获取会话句柄,那么您的密钥设置正确!
| 归档时间: |
|
| 查看次数: |
8392 次 |
| 最近记录: |