🦆

【AWS】Amazon Linux 2023でEC2初回起動時からSSHパスワード認証を有効にする方法(pemなしログイン)

に公開

AWS EC2インスタンスは、通常、キーペア(pemファイル)によるSSH認証を前提としています。しかし、開発検証や特殊な要件において「EC2初回起動時からパスワード認証でログインしたい」というケースもあります。

この記事では、Amazon Linux 2023 を使ったEC2インスタンスにおいて、初回起動時からSSHパスワード認証を有効化する方法を、UserDataスクリプトを用いて解説します。


✅ 想定シナリオ

  • pemファイルは使わない(使えない)
  • EC2初回起動時にSSHパスワード認証を有効にしたい
  • OSは Amazon Linux 2023

🧩 解決方法の概要

Amazon Linux 2023では、初期状態でSSHのパスワード認証は無効になっています。そのため、EC2インスタンス作成時に UserDataスクリプト を用いて以下を自動設定します:

  1. SSHの設定を変更し、パスワード認証を有効化
  2. ec2-user にログイン用のパスワードを設定
  3. SSHデーモンを再起動

🪄 UserData スクリプト(Amazon Linux 2023 対応)

以下のスクリプトを、EC2起動時の「ユーザーデータ」に貼り付けてください。

#!/bin/bash
# ec2-user にログイン用のパスワードを設定
echo 'ec2-user:YourSecurePassword123!' | chpasswd

# SSH 設定の変更:パスワード認証を有効化
sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/^#PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config

# PAMを有効化(Amazon Linux 2023では必要な場合あり)
sed -i 's/^UsePAM no/UsePAM yes/' /etc/ssh/sshd_config
sed -i 's/^#UsePAM no/UsePAM yes/' /etc/ssh/sshd_config

# root ログインは無効のまま(任意)
sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

# SSH デーモンを再起動
systemctl restart sshd

💡 YourSecurePassword123! は任意の強力なパスワードに変更してください。


🚀 ユーザーデータ設定手順(初回起動時)

  1. AWS マネジメントコンソールで「EC2 インスタンスの作成」へ
  2. OSイメージで「Amazon Linux 2023」を選択
  3. 「キーペアの選択」では「キーペアなしで続行」を選択(警告を確認)
  4. 「高度な詳細の設定」→「ユーザーデータ」欄に上記スクリプトを貼り付け
  5. セキュリティグループで TCP 22番ポート(SSH) を開放
  6. インスタンスを起動

🔐 SSH接続手順(初回ログイン)

ssh ec2-user@<EC2のパブリックIP>
  • ユーザー名:ec2-user
  • パスワード:YourSecurePassword123!(UserDataで設定したもの)

🔒 セキュリティに関する注意点

対応項目 内容
強力なパスワード 英数字・記号を含む長く複雑なパスワードを設定しましょう
アクセス制限 セキュリティグループでSSHアクセス元IPを制限することが必須
一時的運用 パスワードログインは一時的な利用に留め、用途が終わったら無効化するのが推奨です

✅ まとめ

Amazon Linux 2023 では、pemファイルを使わず、初回起動時からパスワード認証でSSHログインすることも可能です。そのためには、UserData を使って起動時に必要な設定をすべて自動化しておく必要があります。

開発や特殊な構成で「キーペアを使えない」場合でも、この手順に従えば柔軟に対応できます。安全性を確保しつつ運用しましょう。

Discussion