0-1. AWS CLI / Session Manager Plugin macOS
brew install awscli
brew install --cask session-manager-plugin # or: brew install session-manager-plugin
aws --version
session-manager-plugin --version
アクセスキー方式(すでに実施済の形)
aws configure
AWS Access Key ID: AKIA....
AWS Secret Access Key: ********
Default region name: ap-northeast-1
Default output format: json
検証
aws sts get-caller-identity --output json
ベストプラクティス • ~/.aws/credentials と ~/.aws/config の権限は 600 推奨 • 鍵は定期ローテーション、MFA必須ルールがあるなら従う • 公開場所に絶対貼らない(貼ってしまったら即削除&再発行)
sudo systemctl status amazon-ssm-agent
sudo systemctl enable --now amazon-ssm-agent
•ネットワーク:NATありならそのままOK
完全プライベートにするなら VPCエンドポイント (ssm, ssmmessages, ec2messages / 監査なら logs)を後で追加
SSM 接続テスト
aws ssm describe-instance-information --region ap-northeast-1 \
--query "InstanceInformationList[].{Id:InstanceId,Ping:PingStatus}"
aws ssm start-session --region ap-northeast-1 --target i-xxxxxxxxxxxxxxxxx
~/.ssh/config(動作済みの最終形)
SSMで直接プライベートEC2に接続する設定
Host private1-ssm
HostName i-06038da6332891790
User ec2-user
IdentityFile ~/.ssh/closet-search.pem
IdentitiesOnly yes
ProxyCommand /bin/sh -lc 'aws ssm start-session --region ap-northeast-1 --target %h --document-name AWS-StartSSHSession --parameters "portNumber=%p"'
Host private2-ssm
HostName i-0442d66d290cc9f1c
User ec2-user
IdentityFile ~/.ssh/closet-search.pem
IdentitiesOnly yes
ProxyCommand /bin/sh -lc 'aws ssm start-session --region ap-northeast-1 --target %h --document-name AWS-StartSSHSession --parameters "portNumber=%p"'
接続