AWSのLightsailのAmazon Linuxインスタンスに FTP サーバーとFTP ユーザーを追加して接続する方法

その他

LightsailインスタンスにSSHでローカルPCから接続

具体的な方法は省略

vsftpd のインストールと設定

以下のコマンドを使用してFTPサーバー (vsftpd) をインストールします。

sudo yum update -y
sudo yum install vsftpd -y

vsftpd の設定:

vsftpd の設定ファイルを編集します。この例では nano エディタを使用しますが、お好みのエディタを使用できます。

sudo nano /etc/vsftpd/vsftpd.conf

以下の設定変更を行ってください:

anonymous_enable=NO #変更
local_enable=YES
write_enable=YES
chroot_local_user=YES #コメントアウト
allow_writeable_chroot=YES #コメントアウト
userlist_enable=NO #変更
listen_port=xxx  #必要に応じて追加
xferlog_file=xxx #コメントアウト ログファイルのパス
xferlog_enable=YES //ログファイルの生成
//パッシブモードの設定
pasv_enable=YES
pasv_min_port=10240
pasv_max_port=10400
pasv_address=<YOUR_PUBLIC_IP_ADDRESS>

ここでは、インスタンスのパブリックIPアドレスに置き換えてください。pasv_min_portとpasv_max_portは、パッシブモード接続に使用するポート範囲を指定します。

設定を保存し、エディタを閉じます。

vsftpdサービスの再起動

vsftpdサービスを再起動して変更を適用します。

sudo systemctl restart vsftpd

ファイアウォールでパッシブモードのポート範囲を開放

AWSのセキュリティグループで、上記で指定したパッシブモードのポート範囲(この例では10240-10400)を開放します。ftpアクセスポートは「4567」としています。

vsftpd サーバーの起動と有効化

次のコマンドを実行して vsftpd サーバーを起動し、システムの起動時に自動的に開始されるように設定します。

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

FTPユーザーの追加

次に、FTPユーザーを追加します。以下のコマンドを使用して新しいユーザーを作成し、パスワードを設定します。your_username と your_password を適切な値に置き換えてください。

sudo adduser your_username
sudo passwd your_username

パスワードを入力するように求められるので、指定したパスワードを入力してください。

ユーザーのホームディレクトリの設定:

ユーザーのホームディレクトリを作成し、所有者とパーミッションを設定します。

sudo mkdir /home/your_username/ftp
sudo chown your_username:your_username /home/your_username/ftp
sudo chmod 750 /home/your_username/ftp

これでAmazon LinuxインスタンスにFTPサーバーが設定され、FTPユーザーが追加されました。これで、FTPクライアントを使用して作成したFTPユーザーで接続できるようになります。

ユーザーのホームディレクトリの変更方法

以下のコマンドでユーザーのホームディレクトリを/home/ec2-user/xxxに変更します。your_usernameは、作成したユーザー名に置き換えてください。

sudo usermod -d /home/ec2-user/xxx your_username

下図の例では、「test」フォルダーを作って、そのフォルダーをデフォルトのフォルダーに指定しています。

また、既存のec2-userグループに今回作成したyour_usernameを追加するために下記のコマンドを使用します。

sudo usermod -a -G ec2-user your_username

下図の例では、「ls -la」コマンドで「test」フォルダーの所有者が「ec2-user」となっているため、your_usernameを「ec2-user」グループに追加して、「test」フォルダーに制御権を付与しています。

グループに含まれているユーザー名の確認方法

Linuxでは、getentコマンドを使用してグループに含まれているユーザー名を確認することができます。以下のコマンドを実行して、特定のグループに属するユーザーをリストアップします。

getent group <group_name>

ここでは、<group_name>は確認したいグループ名に置き換えてください。

コマンドの出力は、グループ名、パスワード(通常は「x」が表示されます)、グループID、およびカンマで区切られたユーザー名のリストとなります。
下記の例では、ユーザー user1、user2、および user3 が developers グループに属しています。

developers:x:1001:user1,user2,user3

vsftpdがリスニング中であることの確認方法

sudo systemctl restart vsftpd

これで、vsftpdがリスニングしているポートを確認できるはずです。それでも問題が解決しない場合は、他の要因が原因として考えられます。たとえば、AWSのセキュリティグループやネットワークACLの設定などです。

FTPクライアントの接続設定:

以下は、一般的なFTPクライアントで必要な接続情報です。

ホスト: AWS LightsailインスタンスのパブリックIPアドレス
ポート: 21 (デフォルトのFTPポート)
ユーザー名: 先程作成したFTPユーザー名
パスワード: 先程設定したFTPユーザーのパスワード
転送モード: アクティブまたはパッシブ (通常、パッシブモードが推奨されます)
これで、FTPクライアントを使ってAWS LightsailのAmazon Linuxインスタンスに接続できます。

ローカル(サーバ自身)からFTPで接続する方法

lftpのインストール:

以下のコマンドでlftpをインストールします。

sudo yum install lftp -y

ローカルでFTP接続

lftpコマンドを使用して接続を試みる:

lftp -u your_username -p your_port localhost

your_usernameは、先程作成したユーザー名に置き換えてください。

パスワードを入力:
Password:プロンプトが表示されたら、設定したパスワードを入力します。

接続の成功の確認方法

正しく接続できた場合、以下のようなメッセージが表示されます。

lftp your_username@localhost:~>

ログインができたら、通常の「ls」や「cd」コマンドを使うことができます。

終了する場合は「exit」コマンドを入力します。

参考URL

Lightsail インスタンスに FTP サーバーとユーザーをセットアップする
Amazon Linux 2、CentOS、Ubuntu、または Debian を実行している Amazon Lightsail インスタンスにファイル転送プロトコル (FTP) サーバーと FTP ユーザーをセットアップしたいと考えています。
AWS EC2(Amazon Linux2)でFTPサーバを構築する - Qiita
今回はさくっとAWS EC2でFTPサーバお試し構築してみます。EC2は同一サブネットに2つデプロイして、1つをFTPサーバ、もう1つをクライアントとして設定し、FTPでファイル送受信を行う設定にな…
タイトルとURLをコピーしました