Debian11的系统,在串口终端ttyS0开机直接登陆root用户,无需输入密码验证,即设置串口自动登录

在Debian 11上为串口配置root自动登录,最标准且安全的方法是为`serial-getty`服务创建一个“覆盖(override)配置文件”。这样做的好处是,当系统更新时,你的自定义设置不会被覆盖。

下面是具体的操作步骤,请将命令中的`ttyS0`替换为实际的串口设备名(例如`ttyS0`、`ttyAMA0`等)。

步骤一:创建服务覆盖目录

首先,为`serial-getty@ttyS0`服务创建一个专有的配置目录。

```bash
sudo mkdir -p /etc/systemd/system/serial-getty@ttyS0.service.d/
```

步骤二:创建并编辑覆盖配置文件

1. 在该目录下创建一个名为`autologin.conf`的文件。
```bash
vi /etc/systemd/system/serial-getty@ttyS0.service.d/autologin.conf
```

2. 将以下内容粘贴到文件中:
```ini
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud --autologin root 115200,57600,38400,9600 %I $TERM
Type=idle
```
参数说明:
ExecStart=:这行是必须的,用于**清空**服务原本的启动命令,以便用新命令替换。
--autologin root:核心参数,指定自动以`root`用户登录。
-o '-p -- \\u':这个选项用于将登录用户名(`root`)传递给`/bin/login`。
--keep-baud:尝试保留之前的波特率设置。
115200:指定尝试的波特率列表,会按顺序尝试。
%I:由systemd自动替换为实际的串口设备名(如`ttyS0`)。
Type=idle:确保服务在系统较为空闲时启动,避免干扰其他关键服务。

3. 保存文件并退出编辑器。

步骤三:赋予root用户串口登录权限

这是至关重要的一步,否则即使设置了自动登录,root用户也可能因为PAM(可插拔认证模块)策略而无法登录。

1. 编辑PAM的登录配置文件:

sudo vi /etc/pam.d/login

2. 在文件的**顶部**添加一行:

auth sufficient pam_listfile.so item=tty sense=allow file=/etc/rootshelltty onerr=fail apply=root

这行配置的意思是:对于root用户,如果其登录的TTY在`/etc/rootshelltty`文件中列出,则允许登录。

3. 创建`/etc/rootshelltty`文件,并将你的串口设备名写入其中。

echo /dev/ttyS0 | sudo tee /etc/rootshelltty

步骤四:应用配置

重新加载systemd配置并重启串口服务,使改动生效。


sudo systemctl daemon-reload
sudo systemctl restart serial-getty@ttyS0.service

验证配置

你可以通过以下命令检查服务的状态,确认它已正确启动。


sudo systemctl status serial-getty@ttyS0.service

在输出中,你应该能看到类似包含`--autologin root`的启动命令。之后,通过串口连接设备,系统应该会自动以root用户登录,不再提示输入用户名和密码。

⚠️ 安全提醒

* **安全风险**:此配置使任何能物理接触到串口的人都能直接获得**root权限**,存在严重的安全隐患。
应用场景:此方法通常仅用于**开发调试**或**嵌入式设备**等受控环境。
备选方案:如果只是想免除密码输入,但保留用户名输入,可以考虑配置SSH密钥登录,这是一种更安全的方式。

按照以上步骤操作,即可实现Debian 11系统在串口界面开机自动登录root。如果配置后未生效,请仔细检查各步骤中的文件名、设备名是否准确无误。