0
0

EC2 RHEL9にSession Manager経由で接続を試してみた

Posted at

はじめに

メンバーの一人が構築したサーバーに自分のユーザーがないため、サーバーにSSH接続出来ないことがあります。
そういう時に役に立つのがSession Manager経由で接続です。

AWSはOSによってSSM Agentがデフォルトで入っていない場合があります。
EC2 RHEL9にSession Manager経由で接続を試してみたため、記事にしました。

RHEL9はデフォルトでSSM Agentが入っていません。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/agent-install-rhel.html

接続方法

SSMのロールを作成する

サービス >> IAM >> 左ペインのロールを選択する。
[ロールを作成]をクリックする。
以下の設定でロールを作成しました。

image.png

image.png

EC2にロールを割り当てる

サービス >> EC2 >> インスタンスをクリックする。
対象のEC2にチェックを入れて[インスタンスの状態] >> セキュリティ >> IAMロールを変更をクリックする。

image.png

作成したロールを選択して[IAMロールの更新]をクリックする。
image.png

EC2にセッションマネージャに接続を試す

接続ボタンをクリックしてセッションマネージャを選択する。
image.png

セッションマネージャの接続ボタンが非活性になっているため、押せない。
image.png

サーバーに入ってSSM Agentをインストールする

# sudo dnf install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Red Hat Enterprise Linux 9 for x86_64 - AppStream from RHUI (RPMs)                                           48 MB/s |  27 MB     00:00
Red Hat Enterprise Linux 9 for x86_64 - BaseOS from RHUI (RPMs)                                              39 MB/s |  15 MB     00:00
Red Hat Enterprise Linux 9 Client Configuration                                                              32 kB/s | 3.7 kB     00:00
amazon-ssm-agent.rpm                                                                                        4.7 MB/s |  25 MB     00:05
Dependencies resolved.
============================================================================================================================================
 Package                              Architecture               Version                             Repository                        Size
============================================================================================================================================
Installing:
 amazon-ssm-agent                     x86_64                     3.2.1798.0-1                        @commandline                      25 M

Transaction Summary
============================================================================================================================================
Install  1 Package

Total size: 25 M
Installed size: 105 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: amazon-ssm-agent-3.2.1798.0-1.x86_64                                                                               1/1
  Preparing        :                                                                                                                    1/1
  Running scriptlet: amazon-ssm-agent-3.2.1798.0-1.x86_64                                                                               1/1
  Installing       : amazon-ssm-agent-3.2.1798.0-1.x86_64                                                                               1/1
  Running scriptlet: amazon-ssm-agent-3.2.1798.0-1.x86_64                                                                               1/1
Created symlink /etc/systemd/system/multi-user.target.wants/amazon-ssm-agent.service → /etc/systemd/system/amazon-ssm-agent.service.

  Verifying        : amazon-ssm-agent-3.2.1798.0-1.x86_64                                                                               1/1
Installed products updated.

Installed:
  amazon-ssm-agent-3.2.1798.0-1.x86_64

Complete!

サーバーに入ってSSM Agentのサービスのステータスを確認する。

# systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
     Loaded: loaded (/etc/systemd/system/amazon-ssm-agent.service; enabled; preset: disabled)
     Active: active (running) since Sat 2023-11-25 00:57:20 UTC; 39s ago
   Main PID: 4011 (amazon-ssm-agen)
      Tasks: 16 (limit: 4269)
     Memory: 27.9M
        CPU: 422ms
     CGroup: /system.slice/amazon-ssm-agent.service
             tq4011 /usr/bin/amazon-ssm-agent
             mq4081 /usr/bin/ssm-agent-worker

Nov 25 00:57:20 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:20 INFO [EC2Identity] EC2 registratio>
Nov 25 00:57:20 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:20 INFO [amazon-ssm-agent] Registrati>
Nov 25 00:57:20 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:20 INFO [CredentialRefresher] credent>
Nov 25 00:57:20 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:20 INFO [CredentialRefresher] Startin>
Nov 25 00:57:20 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:20 INFO EC2RoleProvider Successfully >
Nov 25 00:57:20 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:20 INFO [CredentialRefresher] Credent>
Nov 25 00:57:20 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:20 INFO [CredentialRefresher] Next cr>
Nov 25 00:57:21 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:21 INFO [amazon-ssm-agent] [LongRunni>
Nov 25 00:57:21 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:21 INFO [amazon-ssm-agent] [LongRunni>
Nov 25 00:57:21 ip-10-0-5-31.ap-northeast-1.compute.internal amazon-ssm-agent[4011]: 2023-11-25 00:57:21 INFO [amazon-ssm-agent] [LongRunni

再度、EC2にセッションマネージャに接続を試す

image.png

セッションマネージャタブを選択して[接続]をクリックする
image.png

接続出来ました。
image.png

補足

セッションマネージャにて新しいユーザーと鍵を設定する
testユーザー作成
# useradd test
フォルダへ移動する
# cd /home/test
ec2-userの.sshフォルダをコピーする

※今回のみ鍵はec2-userと同じにする

# cp -p -r /home/ec2-user/.ssh .
.sshフォルダの権限をtestに変更する
# chown -R test:test .ssh
# cd /home/ec2-user/.ssh
# ls -tlr
total 4
-rw-------. 1 test test 96 Nov 25 00:47 authorized_keys
sudoの権限を付与する

以下のコマンドを実行してsudoの設定を確認する。
sudoはwheelグループが許可されていることを確認する。

# visudo
## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL

testユーザーをwheelグループに所属させる。

# usermod -G wheel test

testユーザーがwheelグループに所属したことを確認する。

# id test
uid=1002(test) gid=1002(test) groups=1002(test),10(wheel)

testユーザーにパスワード設定する

# passwd test
Changing password for user test.
New password:
Retype new password:
作成したユーザーにログインを試す

ec2-userの秘密鍵とtestユーザーでSSH接続出来ました。
image.png

image.png

プライベートサブネットのEC2も同様にセッションマネージャで接続してみた

SSM Agentをインストールする

プライベートサブネットにあるEC2は外に出れないため、踏み台サーバーでssm agentのパッケージをダウンロードした
yumdownloaderコマンドは以下のサイトを参考にしました。
https://nandakagoodvibes.hatenablog.com/entry/2020/11/30/233046#:~:text=%E3%83%91%E3%83%83%E3%82%B1%E3%8[…]81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82

# yumdownloader --resolve --destdir /tmp https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
Last metadata expiration check: 0:27:53 ago on Sat 25 Nov 2023 01:40:47 AM UTC.
amazon-ssm-agent.rpm                                                                                        4.8 MB/s |  25 MB     00:05
[root@ip-10-0-5-31 tmp]#

プライベートサブネットのEC2にダウンロードしたrpmパッケージをコピーした

# scp -i 秘密鍵.pem /tmp/amazon-ssm-agent.rpm ec2-user@10.0.132.1:/tmp
amazon-ssm-agent.rpm                                                                                      100%   25MB 176.6MB/s   00:00

プライベートサブネットのEC2にSSH接続してコピーしたssm agentのパッケージをインストールした

# rpm -ivh /tmp/amazon-ssm-agent.rpm
warning: /tmp/amazon-ssm-agent.rpm: Header V4 RSA/SHA1 Signature, key ID 97dd04ed: NOKEY
Preparing...                          ################################# [100%]
        file /etc/amazon/ssm/RELEASENOTES.md from install of amazon-ssm-agent-3.2.1798.0-1.x86_64 conflicts with file from package amazon-ssm-agent-3.2.1705.0-1.amzn2.x86_64
        file /usr/bin/amazon-ssm-agent from install of amazon-ssm-agent-3.2.1798.0-1.x86_64 conflicts with file from package amazon-ssm-agent-3.2.1705.0-1.amzn2.x86_64
        file /usr/bin/ssm-agent-worker from install of amazon-ssm-agent-3.2.1798.0-1.x86_64 conflicts with file from package amazon-ssm-agent-3.2.1705.0-1.amzn2.x86_64
        file /usr/bin/ssm-cli from install of amazon-ssm-agent-3.2.1798.0-1.x86_64 conflicts with file from package amazon-ssm-agent-3.2.1705.0-1.amzn2.x86_64
        file /usr/bin/ssm-document-worker from install of amazon-ssm-agent-3.2.1798.0-1.x86_64 conflicts with file from package amazon-ssm-agent-3.2.1705.0-1.amzn2.x86_64
        file /usr/bin/ssm-session-logger from install of amazon-ssm-agent-3.2.1798.0-1.x86_64 conflicts with file from package amazon-ssm-agent-3.2.1705.0-1.amzn2.x86_64
        file /usr/bin/ssm-session-worker from install of amazon-ssm-agent-3.2.1798.0-1.x86_64 conflicts with file from package amazon-ssm-agent-3.2.1705.0-1.amzn2.x86_64

SSM Agentのサービスのステータスを確認した

# systemctl status amazon-ssm-agent
● amazon-ssm-agent.service - amazon-ssm-agent
   Loaded: loaded (/usr/lib/systemd/system/amazon-ssm-agent.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2023-11-25 01:39:32 UTC; 32min ago
 Main PID: 3128 (amazon-ssm-agen)
   CGroup: /system.slice/amazon-ssm-agent.service
           mq3128 /usr/bin/amazon-ssm-agent

Nov 25 02:04:26 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: caused by: Post "https://ssm.ap-northeast-1.amaz...out
Nov 25 02:04:26 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: 2023-11-25 02:04:26 INFO [Registrar] sleeping fo...ion
Nov 25 02:09:23 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: 2023-11-25 02:09:23 INFO [EC2Identity] Checking ...nfo
Nov 25 02:09:23 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: 2023-11-25 02:09:23 INFO [EC2Identity] No regist...ion
Nov 25 02:09:24 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: 2023-11-25 02:09:23 INFO [EC2Identity] Found reg...eys
Nov 25 02:09:24 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: 2023-11-25 02:09:23 INFO [EC2Identity] Checking ...ing
Nov 25 02:09:24 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: 2023-11-25 02:09:23 INFO [EC2Identity] Registeri...ger
Nov 25 02:11:31 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: 2023-11-25 02:11:31 ERROR [Registrar] failed to ...led
Nov 25 02:11:31 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: caused by: Post "https://ssm.ap-northeast-1.amaz...out
Nov 25 02:11:31 ip-10-0-132-1.ap-northeast-1.compute.internal amazon-ssm-agent[3128]: 2023-11-25 02:11:31 INFO [Registrar] sleeping fo...ion
Hint: Some lines were ellipsized, use -l to show in full.
[root@ip-10-0-132-1 tmp]#

セッションマネージャに接続できないことが判明しました。

今回はNatGatewayを作成しよう

踏み台サーバーがあるパブリックサブネットにNatGatewayを作成した。
その後、プライベートサブネットのルートテーブルにNatgateway経由で0.0.0.0(外に出る)設定を入れた。
image.png

セッションマネージャを開き、接続ボタンを押下した
image.png
接続出来ました。
image.png

まとめ

セッションマネージャ経由でEC2に接続するにはSSM agentのパッケージが入っている必要があります。セッションマネージャはSSM Agentに接続出来るようにしないと使用出来ません。
手段の一つとしてプライベートサブネットにあるサーバーの場合はNatGatewayの使用する方法と
VPCエンドポイントを使用する方法があります。
NatGatewayは料金がかかるため、気になる方はVPCエンドポイントを使用をしてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0