SSHフォワーディングでFTP

  • 投稿日:
  • by
  • カテゴリ:

めんどいです。

自分でサーバにつなぐときにはローカルのみで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がパッシブモードでサーバが指定してきたデータ用のポート番号(十進)。このポートも転送しないといけないということ。

 

 

りんく:

PortForwarder Home

 

 

参考にしたページ:

EZ-NET: SSH ポートフォワーディングで FTP 接続