iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0
IT Operation

從前後端踏上 AWS 雲端架構勇者之路系列 第 14 篇

EC2 開好了,怎麼登入?關機再開後,IP 和檔案還在嗎?

  • 分享至 

  • xImage
  •  

昨天建立好 EC2,今天來用金鑰登入主機,存個檔案,再關機重開看看

對照下面這張圖,今天要從自己的電腦連到綠色的 EC2,再把檔案存進紫色的 EBS

從自己的電腦透過 SSH 登入 EC2,再將檔案寫入連接的 EBS;私鑰留在本機

用 SSH 遠端操作 EC2 主機

SSH 可以讓我們透過網路登入遠端主機、執行指令。登入前,終端機操作的是自己的電腦;登入後,操作的就是 AWS 上那台 Ubuntu(官方說明)

這裡沿用昨天的 my-web-server

1. 開機,確認這次要連的 IP

到東京 Asia Pacific (Tokyo) → EC2 → Instances,找到 my-web-server。如果昨天有先關機,現在就按 Instance state → Start instance,等 Running 與狀態檢查通過

複製 Details → Public IPv4 address,等一下 SSH 會用到。自動分配的公有 IP 在 Stop 時會釋出,所以開機後要重新確認

如果昨天在公司,今天換回家裡,上網的公有 IP 可能不同,SG 的 SSH 來源也要跟著改

到 Security → 點 SG → Edit inbound rules,確認 SSH、TCP 22 的來源是自己目前上網的公有 IP /32。一般直接上網可以選 My IP;如果有 VPN 或代理,要確認瀏覽器跟 SSH 的出口是否相同

IP 要放在哪裡?
EC2 目前的公有 IP SSH 指令,告訴電腦要連哪台主機
自己上網的公有 IP /32 SG 的 SSH 來源,允許自己從這個 IP 連進來

2. 拿昨天的金鑰來登入

這裡用 Mac 的 Terminal 示範。先在自己電腦打開終端機,假設 my-web-key.pem 放在下載資料夾,就執行:

cd ~/Downloads
chmod 400 my-web-key.pem

第一行切到下載資料夾,第二行讓私鑰只有擁有者能讀取。如果檔案權限太寬鬆,SSH 可能會拒絕使用

接著把 EC2_PUBLIC_IP 換成剛才複製的 EC2 公有 IP:

ssh -i "my-web-key.pem" ubuntu@EC2_PUBLIC_IP

-i 指定私鑰的位置,ubuntu 是 Ubuntu 主機裡的使用者,不是 IAM 名稱。私鑰放在其他資料夾,就要改路徑;留在自己電腦就好,不要上傳或交給別人

如果怕打錯,也可以在 Console 選這台主機,按 Connect → SSH client,對照 AWS 提供的連線指令

Windows 則可以用有安裝 OpenSSH 的 PowerShell,切到私鑰所在資料夾,執行同一行 ssh。檔案權限不用打 chmod,改在 .pem 按右鍵,進入 內容 → 安全性 → 進階,停用繼承,只保留目前使用者的存取權~

3. 確認連到自己的主機

第一次連線會詢問是否信任這台主機,並顯示 fingerprint(指紋),要先確認是不是自己的主機

在 Console 選同一台 EC2,按 Actions → Monitor and troubleshoot → Get system log,找 BEGIN SSH HOST KEY FINGERPRINTS,比對相同類型的指紋。一致後再輸入 yes 繼續

登入後可以打這兩行,看看現在的使用者跟所在資料夾:

whoami
pwd

應該會分別看到 ubuntu 跟 /home/ubuntu

如果登入時卡住,也可以先從訊息判斷:

訊息 先看哪裡?
No such file or directory,找不到私鑰 自己電腦的資料夾、檔名有沒有對
UNPROTECTED PRIVATE KEY FILE 私鑰的檔案權限
Connection timed out 主機有沒有開、IP、SG 來源、路由與本機網路限制
Permission denied (publickey) ubuntu 使用者名稱、金鑰有沒有拿對

金鑰拿錯,改 SG 也沒用,先照錯誤訊息找原因就好~

主機關掉再開,檔案還在嗎?

昨天選的 EBS 是保存系統與檔案的磁碟,一般 Stop 關機會保留磁碟與裡面的檔案

我們來存個檔案試試。在已經登入 EC2 的終端機執行:

mkdir -p ~/ec2-practice
date -Iseconds > ~/ec2-practice/before-stop.txt
cat ~/ec2-practice/before-stop.txt

這三行會建立資料夾、把現在的時間存進 before-stop.txt,再顯示內容。記下這個時間,等一下開機後拿來比對

輸入 exit 登出 SSH,再回 Console 關機。要注意登出不會關機,主機還在收費嘿~

關機前記下 Instance ID、公有 IPv4,以及 Storage → Volume ID,用來確認開機後是不是同一台主機、同一顆磁碟

然後按 Instance state → Stop instance,這次維持正常關機,不勾 Skip OS shutdown。等狀態變成 Stopped,再按 Start instance,等 Running 與狀態檢查通過

注意這裡是 Stop 再 Start,不是 Reboot,後面會一起比較差異

IP 變了,但磁碟還是原本那顆

沿用昨天的設定、沒有另外設定固定 IP 的話,開機後應該會看到:Instance ID、Volume ID 一樣,自動公有 IP 重新分配

同一台 EC2 經過 Stop 與 Start,重新取得自動公有 IP;同一顆 EBS 與檔案保留,記憶體內容不保留

複製目前的公有 IP,再用 SSH 登入;如果問主機指紋,一樣先比對。進去後只執行下面兩行~

cat ~/ec2-practice/before-stop.txt
date -Iseconds

第一行應該還是關機前存的時間,第二行才是現在的時間,原本的檔案還在

檔案還在,程式要重新啟動

一般 Stop 不會保留記憶體裡的內容。例如手動啟動的 Node.js,程式碼雖然還在 EBS,開機後仍要再啟動;想要自動執行,就要另外設定

要提醒一下磁碟保留下來也不等於有備份,誤刪的檔案不會因此復原,重要資料仍要備份

如果不想每次換 IP,可以設定 Elastic IP

如果是團隊共用的測試主機,每次換 IP 就得重新通知同事。這時可以用 Elastic IP(EIP),保留一個固定的公有 IPv4

把 EIP 關聯到主機後,只要沒有改動關聯或釋出,一般 Stop/Start 會繼續用同一個位址~

自動公有 IP 在 Stop 時釋出、Start 時重新分配;Elastic IP 保留同一個固定 IP,但主機關機時仍無法連線

圖中的 A、B 代表重新分配前後的 IP。EIP 則保留同一個位址,但主機關機時,一樣連不進去

如果有需要,可以到同一個 Region 的 EC2 → Elastic IPs → Allocate Elastic IP address 申請,再從 Actions → Associate Elastic IP address 關聯到主機

如果是自己練習,我會建議先不用申請,重新複製 IP 就好。EIP 就算沒在用,保留著也會收費

目前 AWS 提供的一般公有 IPv4,使用中或閒置都是 每個每小時 US$0.005,保留 30 天、720 小時約 US$3.60,未扣優惠、未稅。附上官方價格,也是個費用啊 XD

Stop、Reboot、Terminate 有什麼不同?

之後還要用主機,選 Stop;確定不要了,才選 Terminate:

操作 主機會怎樣? 自動公有 IP EBS 裡的檔案
Reboot,重新啟動 作業系統重開,仍算運算費 保留 保留
Stop → Start,關機再開 可以停著,之後再開 釋出後重新取得 保留
Terminate,終止 這台確定不要了,不能再 Start 釋出 看磁碟的 Delete on termination 設定

這張表是以今天 EBS 系統磁碟、使用自動公有 IPv4,沒有 EIP 的主機來看

昨天把系統磁碟的 Delete on termination 設為 Yes,所以 Terminate 時,這顆磁碟與裡面的檔案也會一起刪掉

實務上要先備份或搬走重要資料,再終止主機。如果選擇保留磁碟,也要有人接手管理,畢竟它會繼續收費

小結

如果你有另外試 EIP,記得要釋放掉嘿,不然會一直算錢哦!,可以到到 Elastic IPs 先 Disassociate,再 Release Elastic IP addresses,確認清單已沒有這筆。只解除關聯還是會收費,釋出後那個 IP 也就不再是自己的了

希望這篇文章有讓你對 EC2 有更深入的瞭解

我們下篇見 :D


上一篇
建立一台 EC2 主機,系統、規格和登入方式要怎麼選?
下一篇
圖片一定要放在 EC2 裡嗎?認識 S3、Bucket 和 Object
系列文
從前後端踏上 AWS 雲端架構勇者之路 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言