⚡ 第一步:一键全自动配置脚本
通过默认用户登录,执行 sudo -i 切换到 root 权限,然后直接复制运行以下整段命令:
# ====================================================================
# 1. 终极清洗:彻底抹除密钥文件中任何包含 "Please login" 的强制拦截命令
# ====================================================================
if [ -f /root/.ssh/authorized_keys ]; then
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. 清理覆盖规则:彻底删除子目录下所有高优先级的云平台限制文件
# ====================================================================
rm -f /etc/ssh/sshd_config.d/*.conf
# ====================================================================
# 4. 固化 cloud-init 配置:禁止云平台在后台自动还原 root 锁定
# ====================================================================
if [ -f /etc/cloud/cloud.cfg ]; then
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
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` 没改,会重新生成整套限制!
│
▼
🛡️ 防线 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 密码登录。如果依然秒进,说明三道防线已被全线瓦解,配置完美固化!

