AWS EC2 Linux系统GRUB引导加载器密码设置及自动扩缩容问询
GRUB引导加载器密码设置、输入及自动扩缩容场景的影响
当然可以给GRUB设置密码,这是加固系统启动安全的常规操作——毕竟能摸到GRUB界面的人可以直接修改启动参数、进入单用户模式,加个密码就能把这个风险点堵上。下面分三个问题详细说:
1. 如何给GRUB设置密码?
我一般推荐用加密密码(避免明文泄露),步骤很直观:
- 先生成加密密码:在终端运行
grub-mkpasswd-pbkdf2,按照提示输入两次你想设置的密码,完成后会输出一行以grub.pbkdf2.sha512.开头的加密字符串,把这行复制好。 - 编辑GRUB的自定义配置脚本,比如
/etc/grub.d/40_custom,在文件末尾添加以下内容(把your_grub_user换成你想设置的用户名,加密字符串粘贴进去):set superusers="your_grub_user" password_pbkdf2 your_grub_user grub.pbkdf2.sha512.10000...(这里粘贴刚才的加密字符串) - 最后更新GRUB配置:Debian/Ubuntu系跑
update-grub,RHEL/CentOS系跑grub2-mkconfig -o /boot/grub2/grub.cfg就行。
2. 设置密码后怎么输入?
分几种场景:
- 正常启动:如果没给具体启动项加额外限制,直接选菜单回车就能启动,不需要输密码。
- 编辑启动参数:在GRUB菜单里按
e键想修改启动项时,会弹出用户名和密码的输入提示,输入你设置的superusers用户名和对应密码,验证通过后才能进入编辑界面。 - 进入GRUB命令行:按
c键进入GRUB命令行模式,同样会先要求输入用户名和密码,认证成功后才能执行命令。
3. 无人工输入密码时,自动扩缩容会出什么问题?
这是个很容易踩的坑!我在运维云环境时碰到过好几次:
自动扩缩容(比如云平台自动创建新节点、容器集群自动扩容工作节点)的核心是无人值守自动完成系统启动,如果GRUB设了密码,会直接卡住:
- 新扩容的节点启动后会停在GRUB的密码认证界面,没人输入密码就没法继续启动,导致节点无法加入集群,扩缩容直接失败。
- 如果是节点故障后自动重建的场景,重建的实例会一直卡着,没法恢复服务,甚至拖垮整个集群的可用性。
- 有些云平台的镜像部署逻辑不支持输入GRUB密码,带GRUB密码的自定义镜像直接部署失败,连实例都创建不起来。
内容的提问来源于stack exchange,提问作者Maven Cheong
相关产品推荐
相关产品推荐

