技術の犬小屋

Webプログラミングを餌に生きる犬のメモ帳

久々にAmazon EC2のAmazon Linuxにvsftpをセットアップしようとしたところ、手順を忘れかけていたのでメモを残しておく。
 

vsftpのセットアップ手順

Amazon Linuxへvsftpをセットアップするには、以下の手順に沿って行う。

  1. yumコマンドでvsftpをインストールする
  2. 使われていないポートを確認する
  3. vsftpを設定する
  4. ユーザを作成する
  5. vsftpの起動設定を行う
  6. vsftpを起動する
  7. Amazon EC2のSecurity Groupsを設定する

 
以下より、手順ごとに解説する。
 

yumコマンドでvsftpをインストールする

以下のコマンドを実行し、vsftpをインストールする。

sudo yum install vsftpd

 

使われていないポートを確認する

以下のコマンドを実行し,使われていないコマンドを確認する。

cat /proc/sys/net/ipv4/ip_local_port_range

 
以下のようなレスポンスが返ってきた場合,32768~61000までが空いていることが分かる。

32768   61000

 

vsftpを設定する

vsftp.confを編集する

以下のコマンドを実行し,vsftpの設定ファイルの編集を行う。

sudo vi /etc/vsftpd/vsftpd.conf

 
以下の表にvsftpd.confの変更内容を示す。
 

vsftp.confの変更内容
分類 内容 意味
修正 anonymous_enable=NO 匿名ユーザーのログインは許可しない。
修正 dirmessage_enable=NO ユーザが新しいディレクトリに初めて移動したとしてもメッセージは表示しない。
修正 ascii_upload_enable=YES アスキーモードのアップロードを有効にする。
修正 ascii_download_enable=YES アスキーモードのダウンロードを有効にする。
修正 chroot_local_user=YES ローカルユーザーのルートを各自のホームに変更する。
修正 chroot_list_enable=YES chroot_listを有効にする。ファイルはデフォルト(chroot_list_file=/etc/vsftpd/chroot_list)になる。
修正 tcp_wrappers=NO ホストへのアクセスを制御しない。(EC2のSecurity Groupsで設定する方がよい)
修正 connect_from_port_20=NO ActiveFTPを無効にする。
修正 xferlog_std_format=NO wu-ftpdではなく,vsftpdログ形式でログを記録する。
追加 pasv_enable=YES PASV FTPを有効にする。
追加 pasv_addr_resolve=YES PASVモード接続先IPアドレスをホスト名から取得する。
追加 pasv_address=固定IP Elestic IPを設定する。(インスタンスのPublic DNSを指定するとPASVモードでの接続はできない。バージョン2.0.4以降であれば、IPが固定でなくても pasv_addressにDDNSを書くことで動的なIPに対応できる。)
追加 pasv_min_port=60001 PASVモード接続時の最小ポート番号を設定する。(確認した空きポートの範囲で設定)
追加 pasv_max_port=60010 PASVモード接続時の最大ポート番号を設定する。(確認した空きポートの範囲で設定)
追加 use_localtime=YES ローカルタイムを使用する。(デフォルトはGMT)
追加 force_dot_files=YES .(ドット)で始まるファイルを隠さない。

 

chroot_listを編集する

続いて,chroot_listファイルを作成し,ルートを変更しないユーザーを指定する。ここで指定されたユーザは,ルートディレクトリにアクセスできるようになるので,rootなど特別なユーザーのみ指定する。とりあえず,空にしておいても問題ない。

sudo vi /etc/vsftpd/chroot_list

 

ユーザを作成する

FTPサーバに接続するためのユーザを作成する。デフォルトのec2-userでは,FTPサーバへの接続を行うことができないので,FTPサーバ接続用のユーザを作成する必要が生じる。
 
ユーザを作成するには,以下のコマンドを入力する。

sudo adduser ユーザ名

 
ユーザにパスワードを設定するには,以下のコマンドを入力する。

sudo passwd ユーザ名

 

vsftpの起動設定を行う

vsftpの起動設定を行う。これを行うことでシステムを再起動した場合でも,自動的にvsftpが起動するようになる。
以下のコマンドを入力し,vsftpの起動設定を行う。

sudo chkconfig vsftpd on

 
vsftpdの起動設定を正常に行うことができたかを確認する。以下のコマンドを入力する。

sudo chkconfig

 
vsftpdの項目が以下のように表示されれば,設定が成功している。

vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

vsftpを起動する

以下のコマンドを入力し,vsftpを起動する。

sudo service vsftpd start

 

Amazon EC2のSecurity Groupsを設定する

vsftpはAmazon EC2のインスタンス上で稼働しているが,そのインスタンスが使用しているSecurity Groupの設定を変更する。Security Groupを選択して、21番ポート(FTPがデフォルトで使用)と、60001-60010番ポート(FTPのPASVモード時に使用)を外部からアクセスできるように設定する。
 
これでFTPの設定が一通り完了した。あとはFTP接続クライアントを用いて,接続の確認を行うことになる。
 
 
以上
 
 
参考
道はなくても進むのだ: Amazon EC2 (Amazon Linux) での vsftpd インストールと設定

Javaにおけるリフレクションについて arrow-right
Next post

arrow-left MySQL Workbench 6.0でサーバ側のDBに接続する方法
Previous post

  • 匿名

    2015年5月3日 at 12:49 PM | 返信

    「vsftpdの起動設定を正常に行うことができたかを確認する」までは順調に進んだんですが…
    「sudo service vsftpd start」で
    Starting vsftpd for vsftpd: [FAILED]
    と返事が来て 起動に失敗してしまいます。
    何が原因なんでしょうか?

  • SmokyDog

    2015年5月4日 at 6:08 PM | 返信

    他のプログラムがvsftpが使うはずだったポートを使ってるかもしれないので、確認してみてください。
    http://yumemineko.blogspot.jp/2013/05/vsftp.html

  • T.miura

    2015年5月4日 at 11:28 PM | 返信

    ありがとうございます。
    無事につながりました。…;
    元々起動していたものに スタートかけてたみたいです^^;

    でもつながったはいいものの、 何処にアップロードすればいいのやら…(苦笑)
    C3で作ったディレクトリもFTPでは見当たらないし…おそらく EC2USERの中にあるのかなぁとか思うんですがFTPではアクセスが拒否されてしまって開けません…
    まだまだ前途多難です..^^;;;

  • SmokyDog

    2015年5月5日 at 9:02 PM | 返信

    もしかしたら、こちらの記事が役に立つかもしれないので目を通してみてください。
    http://promamo.com/?p=1477

  • T.miura

    2015年5月6日 at 10:14 AM | 返信

    いつもありがとうございます!
    参考にさせて頂きます。

  • nm

    2015年9月1日 at 5:31 AM | 返信

    いつも参考にさせていただいています。
    こちらの記事に従い、FTPユーザを作成し、FTP クライアントから接続できるようにはなったのですが、wordpress ディレクトリにアクセスできません。var/www/html/直下に展開していて、html以下を所有者:FTP ユーザ、グループ:Apache と設定しています。
    初心者な質問で申し訳ないのですが、考えられる原因はなんでしょうか?
    よろしくお願いいたします。

コメントを残す