- Published on
開通AWS EC2 System Manager
在安全連線上我們可以藉由SSM的方式來達到相對於具有ssh key的更安全的方式
這邊說明兩個做法
Instance Connect

在EC2上點選Connect
這裡會區分兩種連線方式,一個是走Public IP 另一個是走Private Connect
這邊以簡單的Public IP的方式進行
若設定上沒有太大問題就可以直接連線
需要注意兩點
一個是他必須要具備Public IP
另一個是還是要有key pair(即使我們不用SSH Key的方式連線)
System Session Manager
架構圖如下
第一次設定時需注意SSM 會需要比較多的設定步驟
- 我們需要檢查
- IAM身份具有AmazonSSMManagedInstanceCore,並且沒有存在Premission Boundary
- MetaData具有IMDSv2(需要藉由IMDS取得Credentials)
- 具有amazon-ssm-agent
- 網路連線可以暢通
ssm.<region>.amazonaws.com
都做完以後會變成 像這樣的架構邏輯
以下為檢查步驟
檢查 IAM Role 是否正確掛載curl http://169.254.169.254/latest/meta-data/iam/info
確認 Instance Profile 應該只有這個權限AmazonSSMManagedInstanceCore
檢查Metadata是否可用
curl http://169.254.169.254/latest/meta-data/placement/availability-zone

測試網路連線
網路這段需要注意設定VPC subnet 以及IGW
另一種方式是走VPC Endpoint 但就會需要收費
ping ssm.ap-southeast-1.amazonaws.com
dig ssm.ap-southeast-1.amazonaws.com
curl https://ssm.ap-southeast-1.amazonaws.com

確認一下Instance metadate service有勾選Enable
底下的Option or Require是 IMDSv1 IMDSv2的差別
[Instance Metadata Service Version 1 (IMDSv1) – a request/response method
Instance Metadata Service Version 2 (IMDSv2) – a session-oriented method]

重新安裝並啟用SSM agent(預設就有,有需要的話再執行)
sudo yum erase amazon-ssm-agent -y
sudo yum install -y https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/linux_amd64/amazon-ssm-agent.rpm
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent
檢查log有無權限錯誤sudo journalctl -u amazon-ssm-agent -xe
依照本次案例 會看到Permission Boundary的限制導致
若有出現則將此刪掉
若都檢查完成,此時點選Session Manager應該就可以順利連線了