Help us understand the problem. What is going on with this article?

[AWS] EC2でFTPを使いたい

More than 3 years have passed since last update.

EC2上でFTPを使うためのやり方。

キーワード[ vsftp vsftpd EC2 FTP ]


今回使用するのは vsftp 手元のクライアントPCからFTPでファイルをアップロードするのを目標とします。
まあ、ほとんど設定ファイルの編集が終わればそれだけで動いてしまうのですが・・・

大事なのはユーザーをどうするかくらいでしょうか。


セキュリティグループ

FTP接続ではTCP21を解放します。
また、下の例では空いていることを前提に60001-60010を使用しています。
特に何もしていない状態であれば空いているとは思いますが、バッティングしたら変えてください。
AWSCLIを使ってやれば開いてるのを自動的に・・・と思いますが趣旨が変わるのと辛いので今回はやりません。

SG設定

プロトコル ポート ソース
TCP 22 0.0.0.0/0
TCP 60001-60010 0.0.0.0/0

--

インストール
sudo su
yum install vsftpd -y

参考:Amazon EC2 (Amazon Linux) での vsftpd インストールと設定

通りに設定。
vi /etc/vsftpd/vsftpd.conf を編集します。

修正は下記をコピペでできます。

ファイル編集
sudo su
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org

Elastic_IP=`curl http://169.254.169.254/latest/meta-data/public-ipv4`

cat << EOF >> /etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_addr_resolve=YES
pasv_address=${Elastic_IP}
pasv_min_port=60001
pasv_max_port=60010
use_localtime=YES
force_dot_files=YES
EOF

sed -i -e "/^anonymous_enable/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
sed -i -e "/^dirmessage_enable/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
sed -i -e "/^#ascii_upload_enable/s/#//g" /etc/vsftpd/vsftpd.conf
sed -i -e "/^#ascii_download_enable/s/#//g" /etc/vsftpd/vsftpd.conf
sed -i -e "/^#chroot_local_user/s/#//g" /etc/vsftpd/vsftpd.conf
sed -i -e "/^#chroot_list_enable/s/#//g" /etc/vsftpd/vsftpd.conf
sed -i -e "/^tcp_wrappers/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
sed -i -e "/^connect_from_port_20/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
sed -i -e "/^xferlog_std_format/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
touch /etc/vsftpd/chroot_list


vsftpdを起動します

自動起動設定
sudo service vsftpd start
sudo chkconfig vsftpd on

次にFTPで接続する用のユーザーを作成します。

useradd
sudo su
useradd ftp-user
passwd ftpuser
"パスワードを聞かれるので任意のパスワードを設定する"

FTPを使ってftp-userで接続した場合、今回の設定だとユーザーのHOMEディレクトリより上位のディレクトリへはアクセスが出来ないようになっています。
ROOTディレクトリへアクセスする必要がある場合などは別途設定を行ってください。
chroot_list へユーザーを加えていけば大丈夫です。


以上で設定は完了です。
実際にFTP接続できるかテストしましょう

接続テスト

Macのターミナルでftpコマンドを打ち、EC2へ接続してみましょう。

ftp インスタンスのパブリックIP
"ユーザーを聞かれるのでftp-userと打鍵"
"パスワードを聞かれるのでパスワードを打鍵"

以上で接続が出来ます。


下記のスクリプトを作成し。実行権限を与えれば自動的にできます。

ftpconfig.sh
#!/bin/bash
sudo yum install vsftpd -y
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.org
Elastic_IP=`curl http://169.254.169.254/latest/meta-data/public-ipv4`
sudo sh -c "cat << EOF >> /etc/vsftpd/vsftpd.conf
pasv_enable=YES
pasv_addr_resolve=YES
pasv_address=${Elastic_IP}
pasv_min_port=60001
pasv_max_port=60010
use_localtime=YES
force_dot_files=YES
EOF"
sudo sed -i -e "/^anonymous_enable/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
sudo sed -i -e "/^dirmessage_enable/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
sudo sed -i -e "/^#ascii_upload_enable/s/#//g" /etc/vsftpd/vsftpd.conf
sudo sed -i -e "/^#ascii_download_enable/s/#//g" /etc/vsftpd/vsftpd.conf
sudo sed -i -e "/^#chroot_local_user/s/#//g" /etc/vsftpd/vsftpd.conf
sudo sed -i -e "/^#chroot_list_enable/s/#//g" /etc/vsftpd/vsftpd.conf
sudo sed -i -e "/^tcp_wrappers/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
sudo sed -i -e "/^connect_from_port_20/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
sudo sed -i -e "/^xferlog_std_format/s/YES/NO/g" /etc/vsftpd/vsftpd.conf
sudo touch /etc/vsftpd/chroot_list
sudo service vsftpd start
sudo chkconfig vsftpd on

ユーザーの作成は手動で設定してください。


追記

ユーザー毎の設定をします。
/etc/vsftpd/user_conf内にユーザー名のファイルを作成し、細かい指定を行います。

ユーザーのルートディレクトリを/home以下から変更
local_root=/Pathを指定する/

セキュリティ上、chroot_listでFTP使用しないユーザーは弾くように書いておくこと。

Yuki_BB3
バイクと酒と戦車道 こちらに記載した内容は所属会社とは関係ありません
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした