FTPサーバー(vsftpd)を設定する

2013年3月21日

曜日感覚がちょっとおかしくなったサトです。今日は木曜日なのね…

先日、Osukiniサーバーを申し込みされた方からサポートセンターに以下のようなお問い合わせがあった様子。

FTPの設定情報がありません。
FTPで利用するには、どうしたらいいのでしょうか?


私も今までは「接続情報を自分のFTPソフトに設定するだけ」でWEBにアップロードができる環境しか使ったことがなかったので、VPSの契約後は何をどうしたらいいのかわかりませんでした。

サポートセンターの回答はこんな感じ(一部抜粋)。

Osukiniサーバーでは、サービスご提供時の設定ではFTPでのアクセスはできない状態となっております。
FTPでのアクセスを行う場合は、事前に下記の設定が必要です。

  • ファイアウォールで、必要ポートへのアクセスの許可
  • FTPサーバーサービス(プログラム)の起動
設定例については、以下のサポートサイトをご参照ください。

【vsftpdの設定方法】
http://cs.saases.jp/20120518/1838.html

※アクセス先として、ホスト名の欄にはご利用サーバーのIPアドレスをご入力ください。


FTPで使いたい方もたくさんいるよねえ。
ということで、サポートサイトの記事(上記URL)を参考にして私もやってみよう。

ここでは下記のような使い方を想定しての設定になります。

  • FTPソフトを使って「/var/www/html」ディレクトリにファイルをアップロードする
  • FTPへはユーザーアカウントでログインする(設定報告書のユーザー名)

FTPサーバー(vsftpd)を設定する

今まで私が使ったことのあるファイル転送ツール(FFFTPとかFileZillaとか)はクライアント用FTPソフトで、vsftpdはサーバー用。
具体的に何がどう安全なのかはわからないけど、「セキュリティを重視した設計」らしいです。

iptablesを編集する

ここで初めて!Webminを使ってみます。
Airの設定報告書にWebminアクセスのURLやユーザー名、パスワードが記載されているのでそれを参照。


ログイン後のトップページ。アップグレードの案内とか出てるけど後回しで。

左側のメニューの「ネットワーク」→「Linux ファイヤウォール」をクリックします。

iptablesの設定画面が出ます。これがsshのポート番号を変更したときにターミナルから設定変更したやつですね。

「ルールを追加する」をクリック。
サポートサイトの記事通りの設定にしてみます。

  • 実行するアクション: 許可
  • ネットワークプロトコル: 等しい、TCP
  • 宛先のTCPまたはUDPポート: 等しい、ポート 21
21番はFTP接続で使うポートです。SaaSesサービスはこのポートがデフォルトで閉じているので開放します。
項目を設定したら「作成」ボタンをクリック。ルールが追加されました。

もう1度「ルールを追加する」をクリックして、次のように設定します。

  • 実行するアクション: 許可
  • ネットワークプロトコル: 等しい、TCP
  • 宛先のTCPまたはUDPポート: 等しい、ポート範囲 60000 から 60030
追加されました。

vsftpd.confを編集する

ここからはいつものターミナルを起動し、viエディタでvsftpd.confを開きます。
$ su
Password:
# vi /etc/vsftpd/vsftpd.conf
ファイルの中身は長いので省略しますが、サポートサイトで触れていた部分について。
pasv_address=IPアドレス
pasv_min_port=60000
pasv_max_port=60030
ファイルの最終行に上記を追加します。
pasv_addressは「パッシブモードの接続先IPアドレス」。パッシブモードとはFTPのデータ転送モードの1つだそうです。なんとなく把握したけど、ここでは説明は省きますね。

あとサポートサイトでは触れていませんが、「anonymous_enable」はデフォルトのYESからNOに変更しておこうと思います。
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
#
これは匿名ユーザーのアクセスを許可するかどうかの設定なので、ソフトウェアやデータを万人に配布したりする場合はYESである必要があります。そうでなければNOのほうが安全かと。

:wqで保存終了したらvsftpdを起動。
# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
このままではサーバーが再起動がするたびに(そんなことしょっちゅう起こって欲しくないけど)vsftpdが停止してしまうので、自動的に起動するように設定。
# /sbin/chkconfig vsftpd on
それから、上記までの設定を行えばFTPソフトでログインすることはできますが、「permission denied」というエラーが出て、肝心なファイルのアップロードができませんでした。
原因はこれ↓
SaaSesサポートセンター » FTPでファイルのアップロードができない[Osukiniサーバー]
WordPressのファイルが入っている「/var/www/html」ディレクトリへの書き込み権限がなかったからです。
rootしか権限がないので、これをユーザーアカウントに変更します。
# chown ユーザー名 /var/www/html

FTPソフトで接続する

ちゃんと接続できるかどうか動作確認してみます。
サポートサイトの説明はvsftpdまでで終わっていたので、ここからの設定に結構悩みました(;´Д`A
公開鍵認証の設定もしていたから更に。
記事が長くなってきてしまったので複数回に分けます!↓↓

FTPソフトでファイル転送ができるようにする!目次

SFTP接続ができるFTPソフトについて、複数回に分けて紹介します。
サポートサイトではFFFTPを勧めていますが、こちらはSFTP接続に対応していないので今回はナシで。

1. FTPサーバー(vsftpd)を設定する
2. FileZillaのSFTP接続設定
3. CyberduckのSFTP接続設定
4. TransmitのSFTP接続設定
5. FetchのSFTP接続設定

SFTP接続に使う秘密鍵(id_rsa)は事前に用意しておいてください。

ちなみに

この記事の設定はFTP接続をするためのものなので21番ポートを開放しましたが、SFTP接続の場合はsshのポートを利用するので、21番開放は不要です。