禁用控制台和 SSH 中的密码登录,仅允许基于密钥的登录。用户应该能够提升

禁用控制台和 SSH 中的密码登录,仅允许基于密钥的登录。用户应该能够提升

我在 virtualbox 上运行 Debian。只有 2 个用户:root 和 user。

我想完全关闭控制台以及通过 ssh 对 root 和用户的基于密码的身份验证。

我希望用户能够使用私钥登录,并能够提升为 root 权限或运行 sudo。

要关闭 ssh,我这样做

PasswordAuthentication no
PermitRootLogin no

但控制台登录仍然有效。在 /etc/shadow 中插入无效哈希或在 /etc/passwd 中为两个用户设置 /usr/sbin/nologin 会禁用 sudo 和 su。

答案1

要禁用虚拟终端的自动生成,请在中设置以下内容/etc/systemd/logind.conf

NAutoVTs=0
ReserveVT=0

[email protected]可能默认启动,因此请禁用它:

systemctl disable [email protected]

我认为你需要重新启动systemd-logind.service

systemctl restart systemd-logind.service

并手动停止任何现有的[email protected]

systemctl stop "getty@tty*.service"

这可能不会终止所有使用 tty 的进程,因此您可能需要检查 的输出以ps查找以/dev/tty*作为控制终端的进程并处理它们。-t的选项ps可能会有所帮助。

或者只是重新启动。


相关片段man 5 logind.conf

NAutoVTs=
取正整数。配置默认分配多少个虚拟终端 (VT),当切换到这些虚拟终端且之前未使用时,将自动生成“autovt”服务。这些服务从[email protected]相应 VT TTY 名称的模板单元实例化,例如[email protected]。默认情况下,[email protected]链接到[email protected]。换句话说,当用户切换到未使用的虚拟终端时,登录提示会动态启动。因此,此参数控制 VT 上有多少个可用的登录“getty”。如果某个 VT 已被其他子系统使用(例如,图形登录),则不会尝试这种激活。请注意,配置的 VTReserveVT=始终受这种激活的影响,即使它不是使用该NAutoVTs=指令配置的 VT 之一。默认为6。设置为时0,将禁用“autovt”服务的自动生成。

ReserveVT=
取正整数。标识一个虚拟终端,该终端应无条件保留以进行[email protected]激活(见上文)。使用此选项选择的 VT 将无条件标记为繁忙,因此其他子系统不会分配它。此功能可用于确保无论其他子系统分配了多少个 VT,始终有一个登录“getty”可用。默认为6(换句话说,Alt-F6 上始终有一个“getty”可用)。设置为时0,VT 保留被禁用。

相关内容