New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
針對無法連線或無法存取的 Linux 執行個體,如何取得對 EC2 序列主控台的存取權?
我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體無法連線或無法存取。此外,我並未在作業系統層級設定 EC2 序列主控台的存取權。
簡短描述
本文適用於下列 Linux 作業系統 (OS):
- Red Hat 7 至 9
- 2023 年版 Amazon Linux 2
- CentOS 7、8
- Rocky Linux 8、9
- Ubuntu 16 至 24
- Debian 9 至 12
**先決條件:**若要使用序列主控台,請確定符合所有先決條件。請注意,在存取執行個體的根磁碟區之後,您必須完成作業系統使用者密碼設定步驟。
解決方法
若要設定序列主控台的存取權,則必須完成下列步驟。
**注意:**如果您的 EC2 序列主控台正常運作,而且您只需要為作業系統使用者設定密碼,請僅完成該解決方法的步驟。若要驗證 EC2 序列主控台是否正常運作,請參閱連線至 EC2 序列主控台。
存取執行個體的根磁碟區
若要存取執行個體的根磁碟區,請啟動臨時執行個體。接下來,在救援執行個體上重新掛載您的 Amazon Elastic Block Store (Amazon EBS) 磁碟區。然後,在救援執行個體中檢查和修改序列主控台的 GRUB 設定。您也可以為根使用者或作業系統使用者設定密碼,並允許 SSH 常駐程式的根目錄存取。
**重要:**設定臨時執行個體時,請注意下列事項:
- 如果您停止並重新啟動執行個體,則會清除執行個體儲存體磁碟區上的資料。備份執行個體儲存體磁碟區上您要保留的任何資料。如需詳細資訊,請參閱 Amazon EC2 執行個體的根磁碟區。
- 如果您停止並重新啟動執行個體,則執行個體的公用 IP 位址就會出現變更。將外部流量路由至執行個體時,最佳實務是使用 Elastic IP 地址而非公用 IP 地址。
- 在進行任何變更之前,請先建立根磁碟區的快照。
將根磁碟連接至救援執行個體
請完成下列步驟:
-
建立新的金鑰對,或使用現有的金鑰對。
-
在相同可用區域中,從具有相同 Linux 作業系統版本的 Amazon Machine Image (AMI) 啟動臨時執行個體。
-
從原始執行個體分離根磁碟區,並將其作為次要磁碟區連結至臨時執行個體。請注意磁碟區裝置名稱。
-
使用您的 SSH 金鑰對連線至臨時執行個體。
-
若要變更為根使用者,請執行下列命令:
[ec2-user ~]$ sudo su
-
若要識別區塊型儲存設備名稱和分割區,請在臨時執行個體執行下列命令:
[root ~]$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 101G 0 disk └─xvdf1 202:81 0 101G 0 part
前項範例使用具有區塊前驅動程式的 XEN 執行個體。磁碟區裝置名稱 /dev/xvda 和 /dev/xvdf 都是分割磁碟區,而 /dev/xvdg 則不是分割磁碟區。如果您的磁碟區已分割,請執行以下命令來掛載分割區 (/dev/xvdf1),而非原始裝置 (/dev/xvdf):
[root ~]$ mount -o nouuid /dev/xvdf1 /mnt
如果您使用 Nitro 型執行個體,則磁碟區裝置名稱看起來會類似於 /dev/nvme[0-26]n1。如果您的執行個體建置在具有 NVMe 的 Nitro 上,則將分割區掛載至 /mnt 目錄中。使用您先前識別的裝置名稱來執行下列命令:
[root ~]$ mount -o nouuid /dev/nvme1n1p1 /mnt
如需詳細資訊,請參閱 Amazon EC2 執行個體磁碟區的裝置名稱。
-
若要在 /mnt 目錄中建立 chroot 環境,請執行下列命令:
[root ~]$ for i in dev proc sys run; do mount -o bind /$i /mnt/$i; done; chroot /mnt
在前項範例中,/dev、/proc、/sys 和 /run 目錄是從原始根目錄檔案系統進行繫結掛載。此設定可讓執行於 chroot 環境內的程序存取這些系統目錄。
設定根使用者或任何其他作業系統使用者的密碼
在 chroot 中,請使用 passwd 命令來為作業系統使用者設定密碼,並允許 SSH 組態中的根存取權。
在下面的範例中,使用者為根使用者。您可以使用下列命令設定根 passwd:
[root ~]$ passwd root
若要在 Linux 變更中設定允許 SSH 常駐程式 (sshd) 的根存取權,並將 #PermitRootLogin yes 變更為 PermitRootLogin yes,請執行下列程式碼:
[root ~]$ sed -i 's/#\?PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config
將核心參數傳遞給引導程式 GRUB
若要將所有主控台輸出傳送至序列連接埠,則必須將下列核心參數 console=tty0 console=ttyS0,115200 傳遞給引導程式 GRUB。
**注意:**tty0 和 ttyS0 包含的是零,而非字母 O。
下列清單會顯示此範例所選的選項:
- console= 是一項核心參數,可指定核心訊息的首選主控台裝置。
- tty0 指的是系統上的首個虛擬主控台 (文字模式)。
- ttyS0 指的是第一個序列連接埠。
- 115200 是序列連接埠的傳輸速率 (每秒位元數)。這是用於序列通訊的常見傳輸速率。
- n8 指定序列連接埠的字元大小和同位設定。n 代表無同位。8 顯示字元大小為 8 位元。
- tty0 參數會啟動核心,將主控台訊息傳送至首個虛擬主控台 (tty0)。這通常為 Linux 系統上的主要文字模式主控台。
- ttyS0 參數會設定核心,以便將控制台訊息傳送至首個序列連接埠 (ttyS0)。訊息會以不具同位的 115200 傳輸速率傳送,而且每個字元為 8 位元。
檢查並更新序列主控台的 GRUB2 設定
將核心參數 console=tty0 和 console=ttyS0,115200 新增至 /etc/default/grub 檔案中的 GRUB_CMDLINE_LINUX_DEFAULT 行中
請完成下列步驟:
-
使用 chroot 中的文字編輯器開啟 /etc/default/grub 檔案。例如,若要使用 nano 或 vi 編輯器,請執行下列其中一個命令:
[root ~]$ nano /etc/default/grub [root ~]$ vi /etc/default/grub
-
找出以 GRUB_CMDLINE_LINUX_DEFAULT 開頭的行。該行會類似於下列內容:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
-
將核心參數 console=tty0 和 console=ttyS0,115200 新增至此行中。輸入空格以分隔這些核心參數與目前參數。更新的行會類似於下列內容:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash console=tty0 console=ttyS0,115200"
-
請儲存變更,並退出文字編輯器。
-
若要更新 GRUB 組態,請執行下列命令:
適用於 Red Hat、CentOS、Amazon Linux 和 Rocky Linux
在 BIOS 型電腦上:
[root ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
在 UEFI 型電腦上:
[root ~]$ grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
針對 Ubuntu 和 Debian
下列命令會使用新的核心參數重新產生 GRUB 組態檔案。
[root ~]$ update-grub
-
若要退出 chroot 並卸載 /dev、/run、/proc 和 /sys,請執行下列命令:
[root ~]$ exit; umount -fl /mnt/{dev,proc,run,sys,}
-
從 Amazon EC2 主控台中選擇 Instances (執行個體),然後選擇救援執行個體。
-
選擇 Instance state (執行個體狀態)、Stop instance (停止執行個體),然後選取 Yes, stop (是,停止)。
-
從救援執行個體中分離根磁碟區 id-##### (來自受損執行個體的磁碟區)。
-
將根磁碟區作為根磁碟區 (/dev/sda1) 連接至受損執行個體,然後啟動此執行個體。
-
使用瀏覽器型用戶端連線至 EC2 執行個體的序列主控台。
-
使用具有根身分的使用者與先前設定的密碼登入。

相關內容
- 已提問 3 個月前lg...
- 已提問 3 個月前lg...
- 已提問 2 個月前lg...
- 已提問 1 年前lg...
- 已提問 2 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前