EC2にSFTPでログインできるようにする
AITPの2NAと申します。
この度、クライアントの要望でEC2にSFTP接続を実装しました。自分自身がやり方を忘れそうなので備忘録として記事を残しておきます。
当記事ではWebサーバーはApacheで動作しており、ed25519形式の鍵で接続します。
EC2にSFTPで安全にログインするための設定
AWS EC2インスタンスにSFTP (Secure File Transfer Protocol) で安全にログインするための設定手順を解説します。セキュリティを強化するために、セキュリティグループでポート22を特定のIPアドレスに制限し、SFTP専用のユーザーを作成します。
EC2 インスタンスの準備
既に作成済みのEC2インスタンスがあることを前提とします。
セキュリティグループの設定

- EC2インスタンスにアタッチされているセキュリティグループの設定を確認します。
- SFTPでアクセスする際に使用するポート22(SSH)へのインバウンドトラフィックを許可するルールを追加します。
- セキュリティ上の理由から、SFTP接続を許可する特定のIPアドレス(例:会社の固定IPやVPNのIPアドレス)に制限することを強く推奨します。これにより、不正アクセスを大幅に減らすことができます。
IPアドレスの制限は、ソースをカスタムにしてCIDR表記で入力します。(*.*.*.*/32)
サーバーへのログイン
次に、EC2インスタンスにログインします。
ログイン方法はセッションマネージャーでのログインを推奨します。
- セッションマネージャーでのログイン(推奨)
セキュリティの観点から、SSHキーを直接管理する代わりに、AWS Systems Managerのセッションマネージャーを使用することを推奨します。セッションマネージャーを使用すると、EC2インスタンスにSSHキーやパブリックIPアドレスなしでアクセスできます。
- SSHでのログイン(代替手段)
セッションマネージャーが利用できない場合は、SSHクライアントを使用してEC2インスタンスにログインします。
SFTP用ユーザーの作成
以下のコマンドを実行して、SFTP専用のユーザーアカウントを作成します。
ユーザー名は任意で決めてください。当記事では『sftp-user』とします。
# 新しいユーザーを作成します。
sudo adduser sftp-user
# 作成したユーザーをapacheグループに変更します。
sudo usermod -g apache sftp-userSSH 設定
作成したユーザーのSSH設定を行います。
# 作成したユーザーに切り替え
sudo su sftp-user
# /home/sftp-userに .sshフォルダ(パーミッション700)を作成
cd ~
mkdir .ssh
chmod 700 .ssh
cd .ssh
# SSH-Keyファイルを作成
vi authorized_keys
# ファイル内にSSH-Key情報を記述
# 例:ssh-ed25519 AAA***************************************************************** example@
# 複数の鍵を登録したい場合改行して追記
# ファイルのパーミッションを600に設定します。
chmod 600 authorized_keysed25519形式のSSh-Keyは ssh-keygen -t ed25519 で作成できます。
SFTPクライアントで接続
FileZilla・WinSCPなどのSFTPクライアントを使用して、作成したユーザー名(sftp-user)と、設定した公開鍵/秘密鍵ペアを使用してEC2インスタンスに接続します。
セキュリティに関する重要な注意点
- 公開鍵認証の利用: パスワード認証はセキュリティリスクが高いため、必ず公開鍵認証を使用してください。
- 最小限の権限の付与: SFTPユーザーには、必要なファイルやディレクトリへの最小限の権限のみを付与するようにしてください。
- 不要なサービスの停止: セキュリティを向上させるために、不要なサービスは停止することを検討してください。
- 定期的なセキュリティアップデート: OSやミドルウェア、アプリケーションを定期的に最新の状態に保つことが重要です。
この手順に従うことで、EC2インスタンスにSFTPで安全にアクセスするための設定を行うことができます。セキュリティに十分配慮し、安全な運用を心がけてください。