FTP over SSHの設定方法 (vsFTPd,PortForwarder) FTP over SSHでセキュアにファイル転送
概念こんな具合です.|FTPクライアント| →→ |ルータ(NAT)| →→ Internet →→ |SSHサーバ| →→ |FTPサーバ| このポイントは,以下の2つ.
まず1.により,FTPサーバからFTPクライアントへデータコネクションを張ることが不可能.
そして2.により,FTPクライアントからFTPサーバへ直接コネクションを張ることができない.
特に2が厄介で,これがあるが故に, FTPサーバのPASV応答を操作してデータコネクションをSSHに乗せる苦労をする必要があった.
1.FTPサーバの設定PASV応答を操作するために,vsFTPdの設定を変更する./etc/vsftpd/vsftpd.conf に追加 pasv_address=127.0.0.1 pasv_enable=YES pasv_min_port=21000 pasv_max_port=21009 記述に勝手に空白を挿入すると,駄目らしい. 空白を入れないように...
設定内容の解説・pasv_enable=YESPASVモードの使用許可.デフォルトでYESなので,実はあえて指定する必要はない.
・pasv_address=127.0.0.1これにより,クライアントからのPASVコマンド (「データコネクションはどこに接続すれば良い?」との問い合わせ)に対して, 「127.0.0.1に接続しなさい」という応答を返すようになる.しかし127.0.0.1はlocalhostなので,クライアントはクライアント自身に接続しようとする...一見意味不明に思えるが, 実はクライアントで実施するポートフォワードによって,うまい具合にFTPサーバに転送されてくることになる.
・pasv_min_port=21000, pasv_max_port=21009PASVコマンドに対して返す接続先ポート番号を,21000〜21009の範囲に制限する (範囲内からランダムに1個が選択される). この制限をかけておかないと, クライアントで実施するポートフォワードの設定ができない.範囲が広すぎて.ポートの個数は同時接続数を考慮して決めれば良いと思うが,とりあえず適当に10個とした.
他のFTPサーバの場合は...同じような設定をすれば良いのだが,
という要件を満たしているFTPサーバでないと,そもそも無理だということになる.
2.クライアント側の設定
(1) PortForwarderの設定PortForwarderの入手については,「POP over SSHでセキュアにメール受信」を参照.pf.conf Host KamoLand HostName kamoland.com ← SSHサーバのホスト名 LocalForward 21 kamoland.com:21 ← この行以降は,FTPサーバのホスト名 LocalForward 21000 kamoland.com:21000 LocalForward 21001 kamoland.com:21001 LocalForward 21002 kamoland.com:21002 LocalForward 21003 kamoland.com:21003 LocalForward 21004 kamoland.com:21004 LocalForward 21005 kamoland.com:21005 LocalForward 21006 kamoland.com:21006 LocalForward 21007 kamoland.com:21007 LocalForward 21008 kamoland.com:21008 LocalForward 21009 kamoland.com:21009 今回は,SSHサーバとFTPサーバをたまたま同じマシンにしたので,HostName行もLocalForward行もどちらともkamoland.com を記述しているが, それぞれ別のマシンになる場合は,
を記述する.
実施するポートフォワードの内容を表にまとめると,
となる. PortForwader以外のフォワード用ソフト(TTSSH等)を使う場合も, 同様にポートフォワードすれば良いはず.
(2) FTPクライアント設定
とする. FFFTPの場合の設定画面イメージを示す.
他のFTPクライアントでも,話は同じ.とは言え, PASVモードに対応していなければ話にならないが.
3.使用まずPortFowarderを起動して,ポートフォワードを有効にしておいてから, FTPを行えばOK. |