AWS Lightsail 彻底固化 Root 登录全自动教程

⚡ 第一步:一键全自动配置脚本
通过默认用户登录,执行 sudo -i 切换到 root 权限,然后直接复制运行以下整段命令:
# ====================================================================
# 1. 终极清洗:彻底抹除密钥文件中任何包含 "Please login" 的强制拦截命令
# 原理解析:AWS 会在 /root/.ssh/authorized_keys 的公钥前加入 command 限制,
# 如果不清除,无论 SSH 怎么配,登录 root 时都会被直接执行 echo 并强行断开。
# ====================================================================
if [ -f /root/.ssh/authorized_keys ]; then
# 暴力抹除:利用正则兼容通杀 admin, ubuntu 等所有默认用户的拦截小尾巴
sed -i 's/no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo '\''Please login as the user \\"[a-zA-Z0-9]*\\" rather than the user \\"root\\".'\'';exit 1" //g' /root/.ssh/authorized_keys
sed -i 's/command="echo.*root.*exit 1" //g' /root/.ssh/authorized_keys
fi
# ====================================================================
# 2. 配置 SSH 主文件:允许 Root 密码登录
# ====================================================================
sed -i 's/^.*PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config
sed -i 's/^.*PasswordAuthentication.*/PasswordAuthentication yes/g' /etc/ssh/sshd_config
# ====================================================================
# 3. 清理覆盖规则:彻底删除子目录下所有高优先级的云平台限制文件
# 原理解析:现代 SSH 会优先加载 /etc/ssh/sshd_config.d/ 目录下所有随机命名的 .conf 文件。
# 如果不直接 rm 掉,子文件里的 "PermitRootLogin no" 会直接覆盖主配置。
# ====================================================================
rm -f /etc/ssh/sshd_config.d/*.conf
# ====================================================================
# 4. 固化 cloud-init 配置:禁止云平台在后台自动还原 root 锁定
# ====================================================================
if [ -f /etc/cloud/cloud.cfg ]; then
# 解锁 cloud-init 对 root 账户的封锁
sed -i 's/disable_root: true/disable_root: false/g' /etc/cloud/cloud.cfg
sed -i 's/disable_root: 1/disable_root: 0/g' /etc/cloud/cloud.cfg
# 防止 cloud-init 在系统重启或遭遇宿主机迁移时自动抹除你的 SSH 密钥
sed -i 's/ssh_deletekeys: true/ssh_deletekeys: false/g' /etc/cloud/cloud.cfg 2>/dev/null
fi
# ====================================================================
# 5. 强制刷新:清理 cloud-init 历史缓存,重启 SSH 服务使配置立刻生效
# ====================================================================
cloud-init clean 2>/dev/null
systemctl restart sshd || systemctl restart ssh
# ====================================================================
# 6. 设置并激活你的 Root 密码
# ⚠️ 提示:请将下面的 "你的新密码" 替换为你实际想设置的密码
# ====================================================================
echo "root:你的新密码" | chpasswd🔍 第二步:核心原理解析
普通的 Linux 服务器只需修改 sshd_config,但在 AWS Lightsail 上,云厂商为了安全设置了三道防线,这也是为什么过段时间就会失效的原因:
[客户端尝试 Root 登录]
│
▼
🛡️ 防线 1:密钥文件限制 (/root/.ssh/authorized_keys)
├── 如果含有 `command="echo 'Please login...' ; exit 1"`
└── 🔴 直接拦截断开!(优先级别最高)
│
▼
🛡️ 防线 2:SSH 子配置目录 (/etc/ssh/sshd_config.d/*.conf)
├── 厂商会放入随机命名的文件(如 50-cloud-init.conf)
└── 🔴 内含 `PermitRootLogin no`,覆盖主配置!
│
▼
🛡️ 防线 3:云初始化守护进程 (cloud-init)
├── 即使你前面全改好了,系统后台更新或重启时,
└── 🔴 如果 `disable_root: true` 没改,会重新生成整套限制配置!🧪 第三步:安全验证(非常重要)
- 绝对不要关闭当前已经连上的这个 SSH 窗口!(留作紧急备用通道)
- 打开一个新的 SSH 客户端窗口,尝试用 root 用户和你刚刚设置的密码进行登录。
如果新窗口登录成功,说明当前配置有效。接着在 root 权限下执行一次重启服务器测试:
reboot- 等待 1 分钟服务器重启完毕后,再次尝试用 root 密码登录。如果依然秒进,说明三道防线已被全线瓦解,配置完美固化!

