EC2(Linux)でFTPサーバ構築


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

今回、FTPの学習のためEC2(Linux)を使ってFTPサーバーを構築しました
 

FTPとは

FTPとはファイル転送プロトコルのこと。FTPとは「File Transfer Protocol」のことであり、ファイルを転送するための通信規格です。クライアントとサーバ間で、ファイルのアップロードやダウンロードを行うときに使われるプロトコルです。

例えば、Webサイトを公開する際には、画像やテキストなどの「ファイル」をFTPでサーバに転送する必要があります。ファイル転送はFTPソフトを活用し、FTPサーバに接続することで実現します。FTPが使うのは20番と21番のポートです。2つのポートを使用できるため細かな制御が可能で、大きなデータの転送に適しています。


1.セキュリティグループ作成

まずはじめに、EC2インスタンスに設定するセキュリティグループを作成します

下記の設定値で設定します
※ 60001-60010 は任意で設定してください

タイプ プロトコル ポート範囲 ソース
カスタムTCP TCP 60001-60010 0.0.0.0/0
SSH TCP 22 0.0.0.0/0
カスタムTCP TCP 21 0.0.0.0/0

2.EC2インスタンスの作成

サーバーとなるEC2インスタンスを作成します

下記の設定値で設定します

項目
名前とタグ 任意で設定
マシンイメージ Amazon Linux2
インスタンスタイプ t2.micro
キーペア 任意で設定
セキュリティグループ 既存のセキュリティグループを選択する(先ほど作成したものを選択)

その他デフォルトで設定しました

3.FTPをインストール

インスタンスにSSH接続し、FTPをインストールしていきます

  1. FTPサーバ用のソフト【vsftpd】をインストールします
     

sudo yum install vsftpd -y


 

  1. vsftpd.config ファイルを編集して、環境に必要な変数を変更します

sudo vim /etc/vsftpd/vfstpd.conf

下記の設定値に変更します

キーボード I で 挿入モードにし変更していきます

anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_deny=NO
listen_port=21
pasv_enable=YES
pasv_min_port=60001
pasv_max_port=60010
pasv_addr_resolve=NO

※ ポート21はFTPのデフォルトポートです。ポートをカスタマイズするには、listen_portを使用したいポートに変更し、connect_from_port_20をNOに設定します。

キーボードEscでノーマルモードに戻り:wqで保存します
 

4.FTPユーザーを追加

 

  1. FTPユーザーを追加します

sudo adduser --home /home/ftp-user ftp-user
 
ftp-userを任意のユーザー名で作成します

 

  1. ユーザーのパスワードを作成します
    パスワードを任意で設定します

sudo passwd ftp_user
 
 

  1. ファイルの所有権を変更します
     

【/home/ftp-user】ファイルの所有権を変更します。【ftp_user】をファイルの所有者にします。

sudo chown ftp-user:ftp-user -R /home/ftp-user/


 

  1. 新しいユーザーを【vsftpd user_list】に追加し、【-a】フラグを使用してファイルに追加します

sudo echo "ftp-user" | sudo tee -a /etc/vsftpd/user_list


 

  1. vsftpd サービスを再起動します

sudo systemctl restart vsftpd

 

5.FTP サーバーに接続

今回はWinSCPを使ってFTPサーバーにログインします

 

項目
転送プロトコル FTP
ホスト名 EC2インスタンスのパブリックDNS名を入力
ポート番号 21
ユーザー名 作成したユーザー名を入力
パスワード 設定したパスワードを入力

 

 


 

ログインできました

まとめ

今回、FTPサーバー構築をしましたがvsftpd.configファイルの設定、FTPユーザの追加などの設定ミスで接続できず、何度も確認し修正して接続までたどりつきました。今後はサーバーを構築する際はファイル設定などに特に気を使って構築していきたいと思います。

Last modified: 2022-10-06

Author