人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ffftp + Putty でFTPをSSHトンネルさせたいと思っているのですが、以下のようにパッシブモードでデータ転送しようとした瞬間(だと思うのですが)、接続ができなくなってしまいます。
以下のようにクライアントの源ポートは8021、サーバのデータ転送ポート(パッシブモードで使われるポート)は50000or50001に設定しています。
原因としてどのようなことが考えられるでしょうか?

--

ホスト 127.0.0.1 (8021) に接続しています.
接続しました.
220 Welcome to blah FTP service.
>USER sampleuser
331 Please specify the password.
>PASS [xxxxxx]
230 Login successful.
>XPWD
257 "/home/hoge"
>TYPE A
200 Switching to ASCII mode.
>PASV
227 Entering Passive Mode (127,0,0,1,195,81)
ダウンロードのためにホスト 127.0.0.1 (50001) に接続しています.
接続できません.
ファイル一覧の取得を中止しました.
ファイル一覧の取得に失敗しました.

●質問者: koime_ryokutya
●カテゴリ:コンピュータ インターネット
✍キーワード:127.0.0.1 ASCII FFFTP FTP hoge
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● tombe
●34ポイント

大雑把に言うとFTPは制御用ポート(21番)とデータ用ポート(20番)の2つのポートを使います・・・と一般的に言われています。

ただし厳密には、サーバ:クライアントの関係で言えば合計4つのポートを使用します。

デフォルトの(PASVモードでない)アクティブモードは、コマンド要求に関しては、クライアント(ポート番号任意)→FTPサーバ(制御用ポート21番)の方向に流れます。

ところがデータ転送に関しては、接続要求がFTPサーバ(データ用20番ポート)→クライアント(サーバ側に通知済みのポート番号)の方向に流れます。つまりデータ転送に関しては一般的な感覚で言うサーバとクライアントの立場が逆転します。

これが原因でファイアーウォール経由ではアクティブモードは動作しません。

従ってファイアーウォール経由の場合はパッシブモードに切り替えます。


パッシブモードの場合、コマンド要求に関してはアクティブモードと同じですが、データ転送に関しては、接続要求がクライアント(ポート番号任意)→FTPサーバ(クライアント側に通知済みのポート番号)の方向に流れます。つまり制御もデータ転送も、サーバ側はいわゆるサーバとしての立ち位置ですからファイアーウォール経由でも大丈夫ということです。


以上は普通にFTP接続した場合の話で、SSHトンネル経由の場合は別の要素が絡みます。

要点は、上記文章の以下の点


> 接続要求がクライアント(ポート番号任意)→FTPサーバ(クライアント側に通知済みのポート番号)


この文章の「クライアント側に通知済みのポート番号」とは何かというと、サーバ側でその時たまたま空いているポート番号です。20番ではありません。常に変動番号です。



結論:常に変動するポート番号にSSHトンネルでフォワーディングするには?



(参考ページ)

http://www.nina.jp/server/basic/ftp.html

ちょっと分かり難いけど資料としては纏っています。


2 ● niwa-mikiho
●33ポイント

1回のコネクションごとにポート番号が変わっていきますが、1度使われたポート番号は一定の秒数は使えません。

その使えない秒数が何秒かは不明ですが、、、

で接続できないのは使うポートが2つしかなく、2つのポートが使われようとする間隔がその秒数よりも短いために接続できないのでは?と思います。

PASSIVE モードで使うポートの範囲を 100 個ほどにしてみては如何でしょうか?


3 ● km1981
●33ポイント

サーバ側のFTPデーモンがPassiveモードに対応していないのだと思います

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ