ファイルアップロードサーバーが、セキュリティ対策としてIPアドレス制限をかけている場合、静的IPアドレスを持つアプリケーションであればホワイトリスト登録で解決できます。
しかし、Herokuのような動的IPアドレスを持つアプリケーションでは、ホワイトリスト登録が困難です。そこで、本記事では、Rubyを用いてプロキシサーバー経由でSFTPによってファイルをアップロードする方法を紹介します。
必要なライブラリのインストール
gem install net-ssh net-sftp
接続確認スクリプト
#!/bin/env ruby
# 必要なライブラリの読み込み
require 'net/ssh'
require 'net/sftp'
require 'net/ssh/proxy/http'
# プロキシサーバー情報
proxy_host = 'example.com'
proxy_port = 8080
proxy_username = 'proxy_user'
proxy_password = 'proxy_password'
# HTTPプロキシオブジェクトの作成
proxy = Net::SSH::Proxy::HTTP.new(proxy_host, proxy_port, user: proxy_username, password: proxy_password)
# SFTPサーバーへの接続
Net::SSH.start('sftp_server_name',
'sftp_username',
{ port: 22,
proxy: proxy,
password: 'sftp_password' }) do |ssh|
# SFTPセッションの確立
ssh.sftp.connect do |sftp|
sftp.dir.foreach("/") do |entry|
puts entry.longname
end
end
end
解説
・上記のスクリプトは、SFTPサーバーに接続し、ルートディレクトリ内のファイルを一覧表示するものです。
・実際にファイルをアップロードするには、sftp.put()メソッドなどを利用します。
・プロキシサーバーの設定や認証情報は、ご自身の環境に合わせて変更してください。
