めんどいです。
自分でサーバにつなぐときにはローカルのみでSFTPです。
外部からFTPでサーバにつなぐ必要が出てきました。
それもSSH経由でやりゃいいわけですが、クライアントがFTPしか対応していない場合、フォワーディングに頼ることになります。
以下のような環境でクライアントにPortForwarderをかます場合のconfigの内容を自分用にメモしておきます。
環境:
・sshdは33022でリスン
・vsftpd使用
PortForwarderのconfigファイルは以下のような感じ。(sshの設定と同じ表記ですね)
Host syasuda
HostName example.com
User ex-user
LocalForward 30021 localhost:21
Port 33022
LocalForward 31021 localhost:31021
LocalForward 31022 localhost:31022
LocalForward 31023 localhost:31023
LocalForward 31024 localhost:31024
LocalForward 31025 localhost:31025
ftpクライアントは、ローカルの30021へ接続することになります。
vsftpの設定ファイル(/etc/vsftpd.conf)に以下を追加。
pasv_enable=YES
pasv_min_port=31021
pasv_max_port=31025
ルータにポート穴をあける必要がある場合は、以下をあける。
33022
重ねて書きますが、クライアントを自由に選べるなら、こんな面倒なことは不要なはずです。
既存のクライアントが素のftpにしか対応していないからこうなります。
socks経由指定(firewall経由)とかできる場合は、もっと簡単なはずです。
手元では、Adobeの古いcontribute3から接続するために準備しました。
最新のCS5だと、sftpに対応しているらしいので、こんな面倒は不要らしいです。
それから、多くのレンサバでほんの少し前まで常識だった、
生FTPでつないで何が悪いの?
という状況でも同じです。こんな面倒しなくて良いはずです。
sshの着目ログ:
転送チャンネルが開けません。原因:対象のコンピュータによって拒否されたため、接続できませんでした。
ディレクトリの一覧を取得できません
→LocalForward 31021 localhost:31021・・・ でポートを転送していない
227 Entering Passive Mode (127,0,0,1,xx,xx).
→xxxxがパッシブモードでサーバが指定してきたデータ用のポート番号(十進)。このポートも転送しないといけないということ。
りんく:
参考にしたページ:
EZ-NET: SSH ポートフォワーディングで FTP 接続
コメント