我在这里遇到一个小问题:我尝试使用私钥将使用SCP和Ruby的文件上传到服务器.代码如下:
def transfer_file(source_file, destination_file)
$log.info("ScpDP: Key=#{@key}")
Net::SCP.start(@host, @userName, :keys => @key ) do |scp|
scp.upload!(source_file,@folder + destination_file, :ssh => @key)
end
end
Run Code Online (Sandbox Code Playgroud)
但是有一些问题,而不是私钥,因为我们将它用于日常用途,我得到以下日志错误:
I, [2010-08-24T11:21:27.247847 #14310] INFO -- : ScpDP: Key=/home/myself/.ssh/id_rsa
I, [2010-08-24T11:21:27.397971 #14310] INFO -- : SCP did not finish successfully (1) (Net::SCP::Error)
/usr/lib/ruby/gems/1.8/gems/net-scp-1.0.2/lib/net/scp.rb:351:in `start_command'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/channel.rb:585:in `call'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/channel.rb:585:in `do_close'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/session.rb:575:in `channel_close'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/session.rb:455:in `send'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/session.rb:455:in `dispatch_incoming_packets'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/session.rb:212:in `preprocess'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/session.rb:196:in `process'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/session.rb:160:in `loop'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/session.rb:160:in `loop_forever'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/session.rb:160:in `loop'
/usr/lib/ruby/gems/1.8/gems/net-ssh-2.0.11/lib/net/ssh/connection/session.rb:109:in `close'
/usr/lib/ruby/gems/1.8/gems/net-scp-1.0.2/lib/net/scp.rb:204:in `start'
/home/myself/work/server.rb:458:in `transfer_file'
Run Code Online (Sandbox Code Playgroud)
你能指出这里可能有什么问题吗?在这个阶段我的Ruby经验非常有限.
简要查看此文档表明它不接受 ssh 密钥选项,正如您所传递的那样。但假设你是对的而我在这部分是错的,
如果没有看到传递给 Transfer_file 的值以及 @folder 中存储的值,我只能猜测,但假设它们都是文件对象,则无法连接这些对象。你必须抓住他们的路径属性。您可能需要记录这两个变量的值以确保您获得路径。使用 ruby 方法来连接字符串参数可能会有更好的运气"#{}",再次在这里猜测但是
path = "#{@folder.path}/#{destination_file.path}" #=> "my_folder/destination_folder
和
scp.upload!(source_file,path, :ssh => @key)
| 归档时间: |
|
| 查看次数: |
4758 次 |
| 最近记录: |