ファイルアップロードサーバーが、セキュリティ対策としてIPアドレス制限をかけている場合、静的IPアドレスを持つアプリケーションであればホワイトリスト登録で解決できます。
しかし、Herokuのような動的IPアドレスを持つアプリケーションでは、ホワイトリスト登録が困難です。そこで、本記事では、Rubyを用いてプロキシサーバー経由でSFTPによってファイルをアップロードする方法を紹介します。
※本記事は、Railsの環境設定から本番運用までを体系的に解説した「Ruby on Rails 実践ガイド」の一部です。
必要なライブラリのインストール
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()メソッドなどを利用します。 - プロキシサーバーの設定や認証情報は、ご自身の環境に合わせて変更してください。
この記事以外にもRailsの環境構築や本番運用の知識を「Ruby on Rails 実践ガイド」で紹介していますので、ぜひチェックしてみてください。
なお、Rubyは副業市場でも単価が高い技術です。もしご自身の技術を使って収入を増やしてみたいと考えているなら、こちらの「ITエンジニアが副業・フリーランスで稼ぐロードマップ 」記事も参考にしてみてください。
リンク
