EC2の公開鍵を削除した綾波「こんなときどうすればいいかわからないの。」
シンジ「Session Managerを使えばいいと思うよ」
ということでAWS Systems Manager Session Managerを使ってログインするまでのやってみた記事になります。
初歩的なことしかしていないので、悪しからず。
検証の流れ
1.EC2にてユーザ”Shinji”を作成し、"ssh-keygen"コマンドでキーペアを作成します。ログインできることを確認します。
2.公開鍵を削除してログインできないことを確認します。
3.Session Managerをセットアップして、ログインできることを確認します。
Session Manager とは
Session Manager はフルマネージド AWS Systems Manager 機能です。Session Manager を使用すると、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、エッジデバイス、オンプレミスサーバー、仮想マシン (VM) を管理できます。インタラクティブ・ワンクリック ブラウザ ベースのシェル、または AWS Command Line Interface (AWS CLI) を使用できます。Session Manager は安全かつ監査可能なノード管理を実現し、インバウンドポートを開いたり、踏み台ホストを維持したり、SSH キーの管理したりする必要はありません。また Session Manager はマネージドノードの制御されたアクセス、厳格なセキュリティプラクティス、ノードアクセス詳細がある完全監査可能なログを要件とする社内ポリシーの尊守を実現しつつ、エンドユーザーが簡単なワンクリック・クロス プラットフォームアクセスによってマネージドノードの使用を実現します。
実際にやってみる
1.EC2にてユーザ”Shinji”を作成し、"ssh-keygen"コマンドでキーペアを作成します。ログインできることを確認します。
Linuxログ
[root@EVA001 ~]# useradd Shinji
[root@EVA001 ~]#
[root@EVA001 ~]# tail /etc/passwd
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
libstoragemgmt:x:997:997:daemon account for libstoragemgmt:/:/usr/sbin/nologin
systemd-coredump:x:996:996:systemd Core Dumper:/:/usr/sbin/nologin
systemd-timesync:x:995:995:systemd Time Synchronization:/:/usr/sbin/nologin
chrony:x:994:994:chrony system user:/var/lib/chrony:/sbin/nologin
ec2-instance-connect:x:993:993::/home/ec2-instance-connect:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/bash
Shinji:x:1001:1001::/home/Shinji:/bin/bash
[root@EVA001 ~]#
[Shinji@EVA001 ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/Shinji/.ssh/id_rsa):
Created directory '/home/Shinji/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/Shinji/.ssh/id_rsa
Your public key has been saved in /home/Shinji/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:yJo+MFWSpBF1EQ8LOei4zQxMBQnmKlpt7ALLoGf1e64 Shinji@EVA001
The key's randomart image is:
+---[RSA 3072]----+
|oo**+o=o |
|oo.o=o.+ |
|o+. +. . |
|+..o.. . |
|=*..= o S |
|B+*+ + |
|+.+o+ . |
| o o. .. |
| ..E+. |
+----[SHA256]-----+
[Shinji@EVA001 ~]$
[root@EVA001 ~]# cd /home/Shinji/.ssh/
[root@EVA001 .ssh]#
[root@EVA001 .ssh]#
[root@EVA001 .ssh]# ll
total 8
-rw-------. 1 Shinji Shinji 2602 Oct 22 10:53 id_rsa
-rw-r--r--. 1 Shinji Shinji 567 Oct 22 10:53 id_rsa.pub
[root@EVA001 .ssh]#
[root@EVA001 .ssh]# mv id_rsa.pub authorized_keys
[root@EVA001 .ssh]#
[root@EVA001 .ssh]#
[root@EVA001 .ssh]# ll
total 8
-rw-r--r--. 1 Shinji Shinji 567 Oct 22 10:53 authorized_keys
-rw-------. 1 Shinji Shinji 2602 Oct 22 10:53 id_rsa
[root@EVA001 .ssh]#
[root@EVA001 .ssh]#
[root@EVA001 .ssh]# rm id_rsa
rm: remove regular file 'id_rsa'? y
[root@EVA001 .ssh]#
[root@EVA001 .ssh]#
[root@EVA001 .ssh]# ll
total 4
-rw-r--r--. 1 Shinji Shinji 567 Oct 22 10:53 authorized_keys
[root@EVA001 .ssh]#
ログインできるかを確認
[USER]@[PC] aws_pem % ssh -i "shinji.pem" Shinji@[パブリックIP]
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Sun Oct 22 10:50:56 2023
[Shinji@EVA001 ~]$
2.公開鍵を削除してログインできないことを確認します。
Linuxログ
#公開鍵をなくした体で移動させる
[root@EVA001 .ssh]# mv authorized_keys /home/Shinji/
[root@EVA001 .ssh]#
[root@EVA001 .ssh]#
[root@EVA001 .ssh]# ll
total 0
[root@EVA001 .ssh]#
[root@EVA001 .ssh]#
[root@EVA001 .ssh]# ll /home/Shinji/
total 4
-rw-r--r--. 1 Shinji Shinji 567 Oct 22 10:53 authorized_keys
[root@EVA001 .ssh]#
#ログインできない
[USER]@[PC] aws_pem % ssh -i "shinji.pem" Shinji@[パブリックIP]
Shinji@[パブリックIP]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[USER]@[PC] aws_pem %
3.Session Managerをセットアップして、ログインできることを確認します。
まず、なにも設定していない状態でEC2の接続をクリックしてみます。
接続するためにIAMインスタンスプロファイルが必要とのこと
Session Managerのセットアップについて
①使用するインスタンスにSSM agentが入っているかを確認する。
System Manager でサポートされているオペレーティングシステム
②インスタンスプロファイルを作成し、EC2インスタンスにアタッチする。
ステップ 1: Systems Manager にインスタンスのアクセス許可を設定する
③VPCエンドポイントを作成
下記の4つエンドポイントの作成が必要
エンドポイント | 説明 |
---|---|
com.amazonaws.region.ssm | Systems Manager サービスのエンドポイント |
com.amazonaws.region.ec2messages | Systems Manager は、このエンドポイントを使用して SSM Agent から Systems Manager サービスへの呼び出しを行います |
com.amazonaws.region.ec2 | Systems Manager を使用して VSS 対応のスナップショットを作成する場合は、EC2 サービスへのエンドポイントがあることを確認します。EC2 エンドポイントが定義されていない場合、アタッチした Amazon EBS ボリュームを列挙する呼び出しは失敗し、Systems Manager コマンドが失敗します。 |
com.amazonaws.region.ssmmessages | このエンドポイントは、Session Manager を使用して安全なデータチャネルを経由しインスタンスに接続する場合にのみ必要です。 |
※com.amazonaws.regionは利用しているリージョン
プロファイルの作成
①信頼されたエンティティを選択
項目 | 設定 |
---|---|
信頼されたエンティティタイプ | AWS のサービス |
ユースケース | EC2 |
②許可を追加
AmazonSSMManagedInstanceCore を選択
③名前、確認、および作成
名前などを入力し、作成
EC2インスタンスにアタッチ
①EC2サービスに移動し、対象インスタンスを選択
②[アクション]>[IAMロールを変更]で作成したIAMロールを選択
VPCエンドポイントの作成
①VPCサービスに移動して、左ペインの Endpointsをクリックし、 エンドポイントを作成
②エンドポイントを作成にて下記のように入力
項目 | 設定 |
---|---|
名前タグ | エンドポイントの名前 |
サービスカテゴリ | AWS のサービス |
サービス | com.amazonaws.ap-northeast-1.ssm |
com.amazonaws.ap-northeast-1.ec2messages | |
com.amazonaws.ap-northeast-1.ec2 | |
com.amazonaws.ap-northeast-1.ssmmessages | |
VPC | 対象のVPC |
EC2インスタンスにて接続を確認する
めちゃくちゃに楽ですね!
すべてはゼーレのシナリオの通りに
参考