EC2接続方法(SSH接続、SSM接続)
SSH接続とは???
SSH接続は、PCからサーバーの専用ポートへ直接接続し、秘密鍵などで認証する方法です。サーバー側でSSHポート(22番)を開放する必要があります。
SSM接続とは???
SSM接続は、サーバーのSSM AgentがAWSのサービスへ外向きに通信してセッションを確立する方法です。サーバー側で特定のポートを開放する必要がなく、秘密鍵も不要なため、よりセキュアで管理が容易なAWS独自の接続方法になります。
以下の理由からSSM接続が望ましい
- SSHはサーバーの特定ポート(22番)をインターネットに公開する必要があるため、外部からの攻撃対象になりやすい。SSM接続は、サーバーがAWSサービスへ外向きに通信するため、インバウンドポートを開放する必要がなく、攻撃されるリスクを大幅に減らせる。
- SSHは秘密鍵を管理する必要があるが、SSM接続はAWSのIAM権限で認証するため、鍵管理が不要になり、鍵の漏洩リスクがない。
- SSM接続は、AWSのサービスと統合されているため、誰がいつどこに接続したかのログが自動で取得され、監査が容易になる。
①SSH接続手順
- EC2インスタンスの作成/起動
- キーペアの作成
- セキュリティグループの設定
- AWS CLI からSSH接続
EC2インスタンスの作成/起動
- AMI選択
Amazon Linux 2023 AMI - インスタンスタイプ選択
t2.micro - ストレージ選択
1 x 8GiB gp3 ルートボリューム、3000 IOPS、暗号化なし
キーペアの作成
セキュリティグループの設定
-
インバウンドルール
-
アウトバウンドルール
- デフォルト(すべてのトラフィック 0.0.0.0/0)
EC2インスタンスの起動
EC2インスタンスを起動します。
AWS CLI からSSH接続
以下のコマンドでAWS CLIからSSH接続を行うことができます。
ssh -i <秘密鍵のフルパス> <EC2インスタンスのデフォルトユーザー名>@<接続先EC2インスタンスIP/DNS>
- EC2インスタンスのデフォルトユーザー名
AMIの種類によって異なる。Amazon Linux は 「ec2-user」。 - 接続先EC2インスタンスのIP/DNS
「パブリックIPv4アドレス」または「パブリックIPv4 DNS」を指定。
EC2インスタンス詳細画面で確認できます。
②SSM接続手順
- Session Manager Plugin for AWS CLI のインストール
- EC2インスタンスの作成/起動
- セキュリティグループの設定
- EC2インスタンスへIAMロールアタッチ
- SSM Agentの稼働確認
- AWS CLI からSSM接続
Session Manager Plugin for AWS CLI のインストール
以下、公式ドキュメントに沿って実施。
AWS CLI を使用してSession Manager セッションを開始する為に必要になります。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html
EC2インスタンスの作成/起動
- AMI選択
Amazon Linux 2023 AMI
※AWS Systems Manager (SSM) サービスと連携してEC2インスタンスをリモートで管理・操作するための「SSM Agent」がプリインストールされています。 - インスタンスタイプ選択
t2.micro - ストレージ選択
1 x 8GiB gp3 ルートボリューム、3000 IOPS、暗号化なし
セキュリティグループの設定
- インバウンドルール
- なし
- アウトバウンドルール
- HTTPS接続の許可
0.0.0.0/0(すべてのIPアドレス)への、ポート443(HTTPS)のトラフィックを許可します。
- HTTPS接続の許可
SSM AgentはEC2インスタンス上で動作し、定期的にAWS Systems Managerサービスのエンドポイント(HTTPS/TCP 443)に対してポーリングを行い、未処理のコマンドやセッション要求がないかを確認します。
EC2インスタンスの起動
EC2インスタンスを起動します。
EC2インスタンスへIAMロールアタッチ
起動したEC2インスタンスに、AmazonSSMManagedInstanceCore ポリシーがアタッチされたIAMロールを関連付けます。
SSM Agentの稼働確認
AWS Systems Manager > フリートマネージャー からSSM Agentが稼働状況を確認することができます。
EC2インスタンスを起動してもSSM Agentが稼働しておらず、この画面に反映されないことがあるので、その際はEC2インスタンスを再起動すると反映されます。
AWS CLI からSSM接続
以下のコマンドでAWS CLIからSSM接続を行うことができます。
aws ssm start-session --target <インスタンスID>
以上