問題描述
嘗試連線 Oracle Cloud 主機執行個體時,所使用的 SSH 金鑰已損毀或遺失,導致無法連線至雲端主機。
錯誤訊息如下:
Permission denied (publickey).
解決方法
透過將執行個體的開機磁碟分離,然後掛載到新的執行個體上,加入新的 SSH 金鑰,最後再將開機磁碟重新掛載回原執行個體。
注意:本文截圖已遺失(原圖床 cdn.staticaly.com 已停止服務),但文字步驟完整可用。Oracle Cloud 控制台介面可能已有變化,請以實際介面為準。
詳細步驟
1. 停止無法連線的執行個體
從控制台進入執行個體詳細資訊頁面,然後點選停止按鈕。
2. 分離開機磁碟
在執行個體詳細資訊頁面下方,找到開機磁碟,找到對應的開機磁碟,點選三個點,選擇分離開機磁碟。
3. 將開機磁碟掛載到可存取的執行個體上
注意:這裡要掛載開機磁碟的執行個體必須是可存取(可連線)的,後續會連線到這個執行個體來掛載開機磁碟。
在控制台上,找到可存取的執行個體,找到附加的區塊儲存磁碟,點選附加區塊儲存磁碟,選擇剛才分離的開機磁碟,點選附加。
4. 使用 iSCSI 命令將開機磁碟掛載到正在執行的執行個體上
使用 SSH 連線到可存取的執行個體,然後使用 iSCSI 命令將開機磁碟掛載到正在執行的執行個體上。
iSCSI 命令可以在附加的區塊儲存磁碟頁面,找到剛才掛載的開機磁碟,點選三個點,即可看到 iSCSI 命令。
展開 Linux 標籤頁,複製 Linux iSCSI 連線命令,然後在已連線的執行個體上執行。
5. 修改 authorized_keys 檔案
sudo su - fdisk -l mount /dev/sdb1 /mnt sudo vi /home/opc/.ssh/authorizedkeys sudo vi /home/ubuntu/.ssh/authorizedkeys umount /mnt
6. 使用 iSCSI 命令卸載開機磁碟並分離
複製 Linux iSCSI 中斷連線命令,然後在已連線的執行個體上執行。
使用 fdisk -l 命令檢查開機磁碟是否已卸載,如果已卸載,即可分離開機磁碟。
7. 將開機磁碟掛載回原執行個體
在控制台上,找到原執行個體,找到附加的區塊儲存磁碟,點選附加區塊儲存磁碟,選擇剛才分離的開機磁碟,點選附加。
等待開機磁碟掛載完成,點選執行個體的啟動按鈕,啟動執行個體,即可使用新的 SSH 金鑰登入執行個體。
