Jamintoは質問への回答に優れた仕事をしましたが、私は最近自分自身でプロセスを実行し、Jamintoの回答をさらに詳しく説明したいと思いました。
EC2インスタンスがすでに作成されていて、Elastic IPアドレスが関連付けられていると想定しています。
ステップ#1:vsftpdをインストールする
EC2サーバーにSSHで接続します。タイプ:
> sudo yum install vsftpd
これでvsftpdがインストールされます。
ステップ#2:EC2インスタンスのFTPポートを開く
次に、EC2サーバーのFTPポートを開く必要があります。AWS EC2マネジメントコンソールにログインし、左側のナビゲーションツリーから[セキュリティグループ]を選択します。EC2インスタンスに割り当てられているセキュリティグループを選択します。次に[受信]タブを選択し、[編集]をクリックします。
ポート範囲が20-21と1024-1048の2つのカスタムTCPルールを追加します。ソースには、「どこでも」を選択できます。Sourceを独自のIPアドレスに設定する場合は、DHCPを介して割り当てられている場合、IPアドレスが変更される可能性があることに注意してください。
ステップ#3:vsftpd.confファイルを更新する
次のように入力して、vsftpd confファイルを編集します。
> sudo vi /etc/vsftpd/vsftpd.conf
次の行を変更して、匿名FTPを無効にします。
anonymous_enable=YES
に
anonymous_enable=NO
次に、vsftpd.confファイルの最後に次の行を追加します。
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>
vsftpd.confファイルは次のようになります。ただし、pasv_addressをパブリックIPアドレスに置き換えてください。
変更を保存するには、Escキーを押してからと入力し:wq
、Enter キーを押します。
ステップ#4:vsftpdを再起動する
次のように入力して、vsftpdを再起動します。
> sudo /etc/init.d/vsftpd restart
次のようなメッセージが表示されます。
これが機能しない場合は、以下を試してください。
> sudo /sbin/service vsftpd restart
ステップ#5:FTPユーザーを作成する
/ etc / vsftpd / user_listを確認すると、次のように表示されます。
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
これは基本的に「これらのユーザーにFTPアクセスを許可しない」と言っています。vsftpdは、このリストにないユーザーにFTPアクセスを許可します。
そのため、新しいFTPアカウントを作成するには、サーバー上に新しいユーザーを作成する必要がある場合があります。(または、/ etc / vsftpd / user_listにリストされていないユーザーアカウントがすでにある場合は、次の手順にスキップできます。)
EC2インスタンスで新しいユーザーを作成するのは非常に簡単です。たとえば、ユーザー「bret」を作成するには、次のように入力します。
> sudo adduser bret
> sudo passwd bret
これは次のようになります。
手順6:ユーザーをホームディレクトリに制限する
この時点で、FTPユーザーはホームディレクトリに制限されていません。これは安全ではありませんが、簡単に修正できます。
次のように入力して、vsftpd confファイルをもう一度編集します。
> sudo vi /etc/vsftpd/vsftpd.conf
次の行のコメントを外します。
chroot_local_user=YES
完了すると、次のようになります。
次のように、vsftpdサーバーを再起動します。
> sudo /etc/init.d/vsftpd restart
すべて完了!
付録A:再起動後も存続
サーバーの起動時にvsftpdが自動的に起動しません。私のような場合、つまり、EC2インスタンスを再起動した後、FTPが壊れているように見えるときに恐怖の瞬間を感じることになりますが、実際には実行されていないだけです。これを修正する便利な方法を次に示します。
> sudo chkconfig --level 345 vsftpd on
または、redhatを使用している場合、サービスを管理する別の方法は、この気の利いたグラフィックユーザーインターフェイスを使用して、自動的に開始するサービスを制御することです。
> sudo ntsysv
サーバーが起動すると、vsftpdが自動的に起動します。
付録B:ユーザーのFTPホームディレクトリの変更
*注:Iman Sedighiは、特定のディレクトリへのユーザーアクセスを制限するためのよりエレガントなソリューションを投稿しました。回答として投稿された彼の優れたソリューションを参照してください*
ユーザーを作成し、そのFTPアクセスを/ var / wwwなどの特定のフォルダーに制限することができます。これを行うには、ユーザーのデフォルトのホームディレクトリを変更する必要があります。
> sudo usermod -d /var/www/ username
この特定の例では、「www」グループにユーザー権限を与えるのが一般的です。これは、/ var / wwwフォルダーに関連付けられていることがよくあります。
> sudo usermod -a -G www username