我遇到了一个奇怪的问题,我使用的 CentOS 6.5 系统在未经我授权的情况下自动重启,然后进入救援模式,我无法进一步诊断问题。
这个服务器是新服务器,这也是我最初感到困惑的原因之一。这种情况发生了两次,第二次,我记录了我的所有操作,以查看是否存在我造成的潜在问题。
当我以 root 用户身份登录时,我的流程如下:
yum update
- 安装 EPEL 后,
fail2ban
- 创建
deploy
用户useradd
authorized_keys
使用我的 RSA 公钥和其他人密钥建立一个文件- 更改的权限:
chmod 700 /home/deploy/.ssh
chmod 400 /home/deploy/.ssh/authorized_keys
- 已更改密码
root
并deploy
已将其添加deploy
到 sudoers 列表(visudo
) - 更改了以下几行
sshd_config
:PermitRootLogin no
PasswordAuthentication no
AllowUsers deploy
- 更改的
iptables
配置:iptables -P INPUT ACCEPT
iptables -F
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
service iptables save
service iptables restart
据我所知,到目前为止我所做的一切都是正确的程序。当我继续创建一些 MySQL 数据库时,我突然收到了以下输出:
Broadcast message from [email protected]
(unknown) at 2:22 ...
The system is going down for reboot NOW!
Control-Alt-Delete pressed
Connection to 192.99.10.69 closed by remote host.
Connection to 192.99.10.69 closed.
这不仅让我措手不及,我还在思考这怎么可能发生,因为当时我是唯一连接到服务器的用户,而且我正在 MySQL 命令提示符中创建用户。我确信我没有按下键盘上的 CTRL+ALT+DEL。
在此之后,服务器提供商 SoYouStart 给我发来标准电子邮件,通知我服务器已进入救援模式。进入救援模式后,我参考本指南作为我如何诊断问题的参考。我最初用 找出我的硬盘分区fdisk -l
。此服务器使用软件 RAID,较大的 RAID 分区位于md3
分区上。
因此,我尝试运行fsck /dev/md3
以查看文件系统是否存在问题,但无法解决。我还尝试对硬盘进行 SMART 测试,它们都通过了,没有任何重大错误。
随后,我使用驱动器挂载了驱动器mount /dev/md3 /mnt/md3
,并尝试进入文件系统。我尝试编辑rc.local
文件并添加了这个(来源):
#!/bin/sh -e
sudo iptables -X
sudo iptables -t nat -F
sudo iptables -t nat -X
sudo iptables -t mangle -F
sudo iptables -t mangle -X
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
此后,只需reboot
将系统重新置于救援模式即可。
我不知道到底发生了什么。我不确定这是用户错误还是其他原因。我在许多其他服务器上执行过此过程,包括同一提供商的不同专用服务器,但我不知道是什么原因导致的。
答案1
我猜是你的服务器提供商在负责。他们似乎正在向你的服务器发送 acpi 事件以重新启动。这可能是他们对禁用 ssh 密码授权、ssh 密钥更改或密码更改的反应,他们延迟检测到了这些情况。