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」コマンドを入力します。