如何在 CentOS 8 上配置无密码串行控制台访问?

如何在 CentOS 8 上配置无密码串行控制台访问?

红帽官方页面提供了一些模糊的提示。

由于 /etc/securetty 列出了许多可能的设备,因此大多数情况下的实际效果是默认允许,因此此更改仅产生很小的影响。但是,如果您使用更严格的配置,则需要将启用 pam_securetty.so 模块的行添加到 /etc/pam.d 目录中的相应文件,并创建一个新的 /etc/securetty 文件。

似乎很奇怪,没有更干净的方法来允许无密码串行控制台访问。

提供了一个运行良好的解决方案,但我不禁想知道是否有更简单的方法。

答案1

以 CentOS 8 的当前状态,我不这么认为。

问题在于,从串行端口进行的传统 Unix 登录涉及两个组件:getty初始化端口设置并提示输入用户名的进程,以及login提示输入密码、检查密码并启动用户会话的进程。 RHEL/CentOS SELinux 规则在编写时就考虑到了这一点。

agetty您可以通过将和的组合替换为login同时完成这两项工作的其他内容,并调整 PAM 和 SELinux 配置以匹配,从而使配置自动登录变得更简单,但您会发现这比列出的三个简单步骤要复杂得多在您提供的链接中

配置自动登录在安全方面是一项非常重要的操作,因此它通常应该是一个多步骤的过程,因此不太可能意外完成。如果您发现自己经常这样做,那么没有什么可以阻止您使用您选择的工具(例如,只是一个脚本,或者可能是 Ansible 之类的东西)来自动化它。

答案2

我对缺乏更清洁的方法也有类似的担忧,因此我必须提出与链接问题中提供的不同的解决方案。

  1. 您需要为内核配置控制台。这取决于平台,但通常是console=ttyS0console=hvc0。那么您不需要将串行控制台附加到/etc/securetty,如中所述pam_securetty(8):
   pam_securetty [...] will also allow root logins on the tty specified
   with console= switch on the kernel command line and on ttys from the
   /sys/class/tty/console/active.
  1. root 登录应该明确允许在串行控制台上,即/etc/pam.d/login应该有pam_securetty模块:
#%PAM-1.0
auth        required    pam_securetty.so
...
  1. 然后你需要在systemd中配置自动登录盖蒂,运行并替换传递给的参数systemctl edit [email protected]登录 -o '-p -- \\u'使用自动登录:
ExecStart=-/sbin/agetty --autologin root --noclear --keep-baud 115200,38400,9600 %I $TERM

相关内容