AWS EC2更換SSH KEY
===
###### tags: `AWS`
### 使用EC2建立的linux機器正常都會選擇一把SSH key,但當我們忘記選擇key或是遺失key的時候會非常的麻煩,當發生這個情況的時候我們只能透過以下幾種方式登入EC2機器。
1. 原先就已開啟SSH帳號密碼登入的user
2. 透過console的Instance connect 但是有[機型的限制](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-serial-console-prerequisites.html#sc-prereqs-instance-types)
3. 使用 AWS Systems Manager但需要安裝[SSM](https://docs.aws.amazon.com/zh_tw/systems-manager/latest/userguide/session-manager-prerequisites.html)
4. 讓userdata來重新新套用SSH key
### **首先我們先選擇一台遺失SSH key的EC2**

### **建立一把測試的key**

### **透過CMD獲取key的公鑰**
```
ssh-keygen -y -f SSHkey-test.pem
```

### **編輯USERDATA**
```
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [users-groups, once]
users:
- name: username
ssh-authorized-keys:
- PublicKeypair
```
### **確認USER名稱**

### **把key公鑰加入USERDATA**
```
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [users-groups, once]
users:
- name: ec2-user
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCgVfG/bGQglvbKebvVrmoOrVq5asDIRhicEICQNYaSM2lFWoR75++9P0kl6eQKZzIs/wve0O2RrzBGpeyfarCbVROjUQUNCrNnmvTztLPgSMmjyAXLSvnNxJQVnRVxeQKs1m57sUU4AWfXx60Jt5wnIdKvcEqyEt2FPNnHzBSsO+K36y3uZ4uogfiuqRuHmTb7lWWDPp7qog/k18LD1lvbjpa7Axzei1caohbCH5MYHIgTwgV1MBQ5ex11hN0ZEwxaKbTK3zATpTWqEbazl9aLti9TP936yqKz9Cphzai/Udxzcaa7ALM9K0VkAWzzjNLKqA8t8T/8IQJhk/B3EBkh
```
### **停止EC2並儲存USERDATA**
※請注意,未設置靜態IP可能會造成IP變動

### **現在複製SSH指令**

### **更換成新的Key名稱進行連線成功**

### **測試建立未選擇key的EC2**

### **一樣可成功進行SSH連線**

---
AWS EC2更換RDP KEY
===
### **首先我們先選擇一台遺失RDP key的EC2**

### **建立一把測試的key**

### **建立遺失Key的EC2實例AMI**

### **輸入可辨識名稱**

### **等待AMI狀態變成可用**

### **建立一個IAM的Roles**

**選擇AmazonSSMManagedInstanceCore,這是EC2啟用SSM必須的權限**

輸入Roles名稱

### **停止遺失金鑰的EC2實例**
※請注意,未設置靜態IP可能會造成IP變動

### **使用剛剛建立的AMI啟動實例並選擇Roles**

### **新的金鑰對無法與舊的匹配**

### **先設置Session Manager啟用KMS**
※請注意,若是自己建立KMS需選擇新建立的KMS金鑰對

### **配置KMS**

**設置名稱**

**選擇稍早建立的Roles**

**確認配置**

**已建立完成**

### **重製密碼**

**使用者名稱填寫:Administrator**

**重置完成**

### **測試登入成功**

### **刪除測試資源並終止原本遺失密碼的EC2**
---