
まだEC2にSSHで入っていますか?実は、踏み台サーバーの管理やPEMキーの運用はもう不要です。今回は、セキュリティを最大化しつつ運用負荷を下げる『SSHレス接続』の正解を教えます!
結論:EC2接続は「SSH」から「Session Manager」へ移行すべき
現在、AWSのベストプラクティスでは、EC2への接続にSSH(ポート22)を利用しないことが推奨されています。
SSHのパスワード認証も不要です。
SSHパスワードの認証を有効にするリスクはこちら
PEMファイルによる鍵認証も不要です。
PEM管理を運用するリスクはこちら
理由は単純です。AWS Systems Manager (SSM) セッションマネージャーを利用することで、以下のメリットが得られるからです。
- ポート22を閉鎖できる: インターネットからの攻撃リスクを遮断。
- 鍵管理(PEM)が不要: IAM権限のみでアクセス制御が可能。
- 踏み台サーバーが不要: コスト削減と管理工数の低減。
なぜ「SSH接続」を廃止する必要があるのか?
従来のSSH接続には、運用上の大きなリスクが潜んでいます。
| リスク項目 | SSH接続(従来) | Session Manager(推奨) |
| ポート開放 | 22番を開ける必要あり | 完全閉鎖(0.0.0.0/0不要) |
| 認証方式 | PEMキー(紛失・流出リスク) | IAM(一時的な認証) |
| 踏み台サーバー | 構築・運用コストが発生 | 不要(AWSマネージド) |
| ログ記録 | 誰が何をしたか追跡が困難 | CloudWatch等に全操作を記録 |
セキュリティホールとしての「22番ポート」
ポート22を開放していると、常に総当たり攻撃(Brute Force Attack)の標的になります。Session Managerを使えば、EC2がプライベートサブネットにあっても、インターネット経由で安全に操作可能です。
AWS SSM Session ManagerでSSHを不要にする
SSM接続の仕組み
SSM Session Managerは、EC2内にインストールされた「SSM Agent」がAWS APIと通信することで動作します。
- インバウンドルールの変更: セキュリティグループで22番ポートを許可する必要はありません。
- 認証: IAMポリシーで制御するため、個別のPEMファイル(キーペア)の配布・管理が不要になります。
設定の3ステップ
- IAMロールの付与: EC2インスタンスに
AmazonSSMManagedInstanceCoreポリシーを持つIAMロールをアタッチ。 - SSM Agentの確認: 最近のAmazon Linux 2/2023なら標準インストール済み。
- 接続実行: マネジメントコンソール、またはAWS CLIから接続。
EC2の設定
EC2インスタンスに AmazonSSMManagedInstanceCoreをアタッチ
新規、または既存のEC2にアタッチするためのRoleにAmazonSSMManagedInstanceCoreのポリシーを追加します。今回は「EC2-Role」という名前のRoleを新規で作成しました。

EC2のインスタンス概要

EC2に接続し、ssm-agentのステータスを確認しておきましょう。
sudo systemctl status amazon-ssm-agentフリートマネージャーにインスタンスが表示されているか確認
Roleをアタッチしてから5 ~ 10分程度待つと、System Manager -> フリートマネージャーにRoleをアタッチしたインスタンスが表示されます。これにてEC2側のセットアップは完了です。

AWS VaultでIAMアクセスキーを安全に保護する
EC2にローカル端末からSSM接続する前にAWSの認証情報をローカル端末に保持する必要があります。
SSMを利用するにはAWS CLIを使いますが、ローカルPCにアクセスキーを「プレーンテキスト」で保存されてしまいます。
例えばmacOSにAWS CLIをインストールし、IAMキーを設定すると以下のコマンドでアクセスキー、シークレットキーが平文で表示されます。
cat ~/.aws/credentials
# 出力
[default]
aws_access_key_id = xxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxこのままではPCがウィルスに感染してしまったり、PCを落としてしまった場合に危険です。
そこで登場するのが AWS Vault です。
AWS Vaultとは?
PCのキーチェーン(macOS KeychainやWindows Credential Manager)にアクセスキーを暗号化して保存するツールです。
| 項目 | 従来の ~/.aws/credentials | AWS Vault |
| 保存状態 | 生テキスト(危険) | 暗号化(安全) |
| 一時認証 | 対応なし | STSを利用した一時セッションを発行 |
| MFA対応 | 手動設定が面倒 | 標準で強力にサポート |
AWS CLIインストール方法
AWS CLIをインストールされていない方は以下ドキュメントを参考にインストールしてください。https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
✅ 必要なもの
・AWS CLI本体のインストール
❌ 不要なもの
・aws configure での長期アクセスキー設定
・~/.aws/credentials にキー保存
AWS Vault が 一時的に環境変数へ認証情報を注入するため、アクセスキーの設定は不要です。
AWS Vaultインストール方法
- macOSの場合
brew install aws-vault- Windows
GitHub Releases から exe をダウンロード
もしくは winget
winget install 99designs.aws-vaultAWS Vaultの使い方
まず、以下のコマンドで認証情報を登録します。
「tsunomaru」の部分は自分が分かりやすいプロファイル名にしてください。
aws-vault add tsunomaruアクセスキー、シークレットアクセスキー、MFAの入力が求められます。
各値を入力してください。
これでAWS Vaultのセットアップは完了です!
SSM経由でEC2へ接続する
EC2にSSM経由で接続してみましょう!
以下コマンドでEC2にSSM経由で接続することができます。
aws-vault exec --region <region-name> <profile-name> -- aws ssm start-session --target <instance-id>私の場合は以下のようになります。
aws-vault exec --region ap-northeast-1 tsunomaru -- aws ssm start-session --target i-01d83ce7bfac2d74f無事EC2に接続することができました!

実務で利用する際の補足
操作はCloudTrailで追跡できる
操作は CloudTrail で追跡できる点を覚えておいてください。
CloudTrailでは以下のようにStartSessionやどのIAMユーザーがどのインスタンスに接続し、発信元IPアドレスまで参照できます。
仮に、IAMアクセスキーなどが漏れてしまった場合はIAMアカウントを無効化することで被害拡大を抑えることができます。
※ただし、EC2に入られた場合はバックドアの危険性があるため、アカウント無効化は被害を抑えるという観点にあることに注意してください。

SSH(22番)ポートは閉じてOK
以下のようにインバウンドルールの22番ポートは削除してOKです。
SSMを導入した以上、基本的には不要なポートになりますので削除しましょう!

まとめ:セキュアなAWS運用の第一歩を踏み出そう
22番ポートを開けっ放しにすることは、家の玄関に鍵をかけずに「見つからないだろう」と思っているのと同じです。
今すぐ取るべきアクション:
- EC2のセキュリティグループを見直し、22番ポートの許可を削除する。
- AWS Vault をインストールし、ローカルの
credentialsファイルを削除する。 - IAMロール を適切に設定し、SSM Session Managerでの接続に切り替える。
これだけで、あなたのAWS環境のセキュリティレベルは劇的に向上します。




