"permission denied" 使用 Rails SFTP 上传文件时
"permission denied" when uploading a file with Rails SFTP
我正在开发一个集成,需要我的 Rails 4 应用每天将 CSV 推送到 SFTP 服务器。该应用程序最终将在 Heroku 上运行。
我正在使用 'net-sftp' gem。
通过 FTP 客户端 (FileZilla) 移动文件有效。
这是我正在尝试使用的非常简单的 class:
require 'net/ssh'
require 'net/sftp'
class SFTP
def initialize(org)
case org
when 'client'
@host = ENV['HOST']
@username = ENV['USERNAME']
@password = ENV['PASSWORD']
@port = ENV['PORT']
end
end
def send(local_path)
Net::SFTP.start(@host, @username , { password: @password, port: @port } ) do |sftp|
sftp.upload!(local_path, "/files")
end
end
end
这是我得到的错误:
Net::SFTP::StatusException: Net::SFTP::StatusException open /files (3, "permission denied")
/net-sftp-2.1.2/lib/net/sftp/operations/upload.rb:321:in `on_open'
/net-sftp-2.1.2/lib/net/sftp/request.rb:87:in `call'
/net-sftp-2.1.2/lib/net/sftp/request.rb:87:in `respond_to'
/net-sftp-2.1.2/lib/net/sftp/session.rb:948:in `dispatch_request'
/net-sftp-2.1.2/lib/net/sftp/session.rb:911:in `when_channel_polled'
我也试过 '~/'
、'~'
和 '~/files'
作为远程路径,我也可以访问所有这些路径。
虽然从文档中不清楚,但所有 net-sftp 示例甚至源代码都表明远程路径必须是远程文件的完整路径,而不仅仅是上传文件夹的路径文件到。 IE。 /files/uploaded_file.txt
,不仅仅是 /files
.
可能发生的情况是服务器尝试将文件夹(/
或 /files
)作为写入文件打开,但失败了。
我正在开发一个集成,需要我的 Rails 4 应用每天将 CSV 推送到 SFTP 服务器。该应用程序最终将在 Heroku 上运行。
我正在使用 'net-sftp' gem。
通过 FTP 客户端 (FileZilla) 移动文件有效。
这是我正在尝试使用的非常简单的 class:
require 'net/ssh'
require 'net/sftp'
class SFTP
def initialize(org)
case org
when 'client'
@host = ENV['HOST']
@username = ENV['USERNAME']
@password = ENV['PASSWORD']
@port = ENV['PORT']
end
end
def send(local_path)
Net::SFTP.start(@host, @username , { password: @password, port: @port } ) do |sftp|
sftp.upload!(local_path, "/files")
end
end
end
这是我得到的错误:
Net::SFTP::StatusException: Net::SFTP::StatusException open /files (3, "permission denied")
/net-sftp-2.1.2/lib/net/sftp/operations/upload.rb:321:in `on_open'
/net-sftp-2.1.2/lib/net/sftp/request.rb:87:in `call'
/net-sftp-2.1.2/lib/net/sftp/request.rb:87:in `respond_to'
/net-sftp-2.1.2/lib/net/sftp/session.rb:948:in `dispatch_request'
/net-sftp-2.1.2/lib/net/sftp/session.rb:911:in `when_channel_polled'
我也试过 '~/'
、'~'
和 '~/files'
作为远程路径,我也可以访问所有这些路径。
虽然从文档中不清楚,但所有 net-sftp 示例甚至源代码都表明远程路径必须是远程文件的完整路径,而不仅仅是上传文件夹的路径文件到。 IE。 /files/uploaded_file.txt
,不仅仅是 /files
.
可能发生的情况是服务器尝试将文件夹(/
或 /files
)作为写入文件打开,但失败了。