Amazon Linux2 ec2-userの鍵追加&パスワード認証の有効化

AWS
この記事は約5分で読めます。
記事内に広告が含まれています。

EC2「Amazon Linux2」を起動させた後、sshでログイン出来るのは起動時に指定した「鍵認証」だけです。今回は備忘録を兼ねて、次の内容を書いていきます。

  • ec2-userの鍵を増やす。
  • ec2-userのパスワード認証を有効にする。

セキュリティ的には甘くなります。ただ、ec2-userだけしか利用出来ない前提で利用者毎に鍵を分けると利用者の特定がしやすいです。パスワード認証は閉じた空間で利便性の為に、等といった需要はあるのかと思います。

手順

それぞれの手順は次の通りです。

  • ec2-userの鍵を増やす。
    → ssh-keygenで鍵を追加する。
  • ec2-userのパスワード認証を有効にする。
    → sshd_configを変更する。

詳しく見ていきましょう。

ec2-userの鍵を増やす

ssh-keygenを利用して鍵(秘密+公開)を新しく作成し、既存のauthorized_keysに追記します。

◆ec2-userでログインして鍵作成

sudo su ec2-user
ssh-keygen

*対話入力は全てEnter(暗号種別RSA, パスコード無し) 。id_rsa(秘密鍵)とid_rsa.pub(公開鍵)が「/home/ec2-user/.ssh」配下に作成されます。

◆作成された公開鍵を許可リストに追記

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

以上です。秘密鍵であるid_rsaは大切に保管しましょう。

■補足1
ssh-keygenを同等の内容で「対話無し」で進める場合は次の通りです。
ssh-keygen -t rsa -N “” -f id_rsa
なお、コメント(デフォルトはユーザー名@ホスト名)を指定する場合は、
ssh-keygen -t rsa -N “” -f id_rsa -C “myKey01”
です。

■補足2
鍵認証ログインのログ確認について書きます。
Aさん:ec2-userの鍵1を持っている。
Bさん:ec2-userの鍵2を持っている。
とした場合に、ログイン情報はec2-userとなり、誰が(どの鍵で)ログインしたのかわかりません。調べるためには「/var/log/secure」に出力されるフィンガープリントを確認します。

以下、出力例です。

Sep 8 23:36:07 ip-x-x-x-x sshd[3154]: Accepted publickey for ec2-user from x.x.x.x port 55261 ssh2: RSA SHA256:UG5YG/5/Wj6wFdLE/Ou6vYLhHtQWlHhxjHvRttNKNAa

EC2内に保存されている公開鍵のフィンガープリントは以下コマンドで確認可能です。

ssh-keygen -lf /home/ec2-user/.ssh/authorized_keys

以下、出力例です。

・2048 SHA256:UG5YG/5/Wj6wFdLE/Ou6vYLhHtQWlHhxjHvRttNKNAa A-san (RSA) 
・2048 SHA256:UG5YG/5/7fAfhjFhfD/FfhasdfDFDAEhF8FnjfFafDD b-san (RSA) 

この例からログインで使われた鍵はAさんのものと分かります。

※Amazon Linux2の場合、デフォルトでフィンガープリントはログ出力されていました。環境によってはsshd_configのログ設定を変更しないと出力されないようです。

ec2-userのパスワード認証を有効にする

ここでの方法はec2-userだけではなく「sshでパスワード認証を有効化」という設定になります。

sshd_config(PasswordAuthenticationをyesに)を変更してsshd.serviceを再起動します。

# sshd_config変更
sudo vi /etc/ssh/sshd_config
(変更前) PasswordAuthentication no
(変更後) PasswordAuthentication yes
# sshd再起動
sudo systemctl restart sshd

なお「PasswordAuthentication」の行削除でもOKです(デフォルトはyesのため)。

次に、ec2-userは初期はパスワード未設定のため、以下で設定します。(もちろんec2-user以外のアカウントを「sudo useradd アカウント名」で作成してもOK)

sudo passwd ec2-user

これでsshのパスワード認証でログイン出来るようになりました。

補足事項

セキュリティ的には鍵認証のほうが強いです(認証鍵の管理方法は別として)。SSHポートの公開状況やポリシー的にマズイ場合は鍵認証を使いましょう。

設定は戻ることがある

今回の内容とは反れますが、設定済のEC2をAMI化して、そのAMIからEC2を起動した場合(要はテンプレートとして展開)、パスワード認証は無効に戻っちゃいます。さらにec2-userの作り直しも発生してec2-userのパスワードも初期化されちゃいます。これは「初回起動時」のcloud-init処理がそのような初期化処理を実施するためです。

cloud-initについては別の記事で書きます。

AWS cloud-init 初回起動後にパスワード認証を無効にしない
Amazon Linux2等でsshd_configのパスワード認証を有効化した後、AMI→EC2化をしたら、パスワード認証が出来なくなっていた。新EC2をよくよく調べると、sshd_configの該当行は「PasswordAuthenti...

まとめ

適用範囲は狭いですが本記事では以下をご紹介しました。

本記事で紹介したこと
  • ec2-userの鍵を増やす。
  • ec2-userのパスワード認証を有効化。

最後までご覧いただき、ありがとうございました。

コメント

Top
タイトルとURLをコピーしました