我有一个 Fedora VPS,其 root 用户没有密码。我使用 SSH 密钥登录。
我在该服务器上还有另一个权限较低的帐户,用于网络管理。我现在也删除了它的密码。
例如,如果服务器上没有拥有密码的用户,那么如果我丢失了 SSH 密钥,到底会发生什么情况?服务器会不会因为无法登录而永远不可用?
sudo
另外,当 root 和调用用户都没有密码时,程序如何运行?我尝试了一下,它甚至没有要求我输入密码:它就有效了,因为我user ALL=(ALL) ALL
的 sudoers 文件中有该行(我应该更改它吗?)
答案1
如果您删除文件的第二个字段,/etc/passwd
那么用户可以毫无困难地登录。只需尝试登录即可允许他们进入。因此,类似这样的事情可能不是您想要做的事情。
root:$1$iM/2lekk$rXUAcF5fY8ddLL.B1bkH63:12242:0:99999:7:::
/etc/passwd 入门
- 用户名:用户登录时使用。长度应在 1 到 32 个字符之间。
- 密码:x 字符表示加密的密码存储在 /etc/shadow 文件中。
- 用户 ID (UID):必须为每个用户分配一个用户 ID (UID)。 UID 0(零)为 root 保留,UID 1-99 为其他预定义帐户保留。另外 UID 100-999 由系统保留用于管理和系统帐户/组。
- 组 ID (GID):主要组 ID(存储在 /etc/group 文件中)
- 用户ID信息:评论字段。它允许您添加有关用户的额外信息,例如用户的全名、电话号码等。该字段通过手指命令使用。
- 主目录:用户登录时所在目录的绝对路径。如果该目录不存在,则用户目录将变为 /
- Command/shell:命令或 shell 的绝对路径 (/bin/bash)。通常,这是一个外壳。请注意,它不一定是外壳。
禁用密码登录
该字段为空且包含 x ( :x:
) 与文件:!:
中的a 之间存在细微差别/etc/shadow
。这意味着该帐户被故意设置为不允许登录,这可能更符合您的要求。
/etc/影子
root:!:15669:0:99999:7:::
对于任何帐户都可以执行相同的操作,如果您确实只想允许ssh
使用公钥/私钥登录,这可能是我建议您执行此操作的方式。
其他问题
例如,如果服务器上没有拥有密码的用户,那么如果我丢失了 SSH 密钥,到底会发生什么情况?服务器会不会因为无法登录而永远不可用?
只要您可以物理访问服务器,您就始终可以访问系统。需要重新启动,使用 VPS 可能会有点困难,但应该是可以的。
您通常将系统启动到单用户模式,此时您可以根据需要编辑/etc/passwd
&文件。/etc/shadow
另外,当 root 和调用用户都没有密码时 sudo 程序如何运行?我尝试了一下,它甚至没有要求我输入密码:它就起作用了,因为我的 sudoers 文件中有该用户 ALL=(ALL) ALL 行(我应该更改它吗?)
是的,如果没有密码,使用sudo
会变得更加困难。在处理 时,有一些方法可以使用其他来源sudo
。请参阅此 U&L 问答,标题为:设置 sudo 密码与登录密码不同。
答案2
请注意,有几件事可以称为“删除密码”。在 Linux 上:
passwd -d USER
将帐户设置为允许无需密码即可登录。 (在这种情况下,某些服务,特别是 ssh,往往会设置为阻止登录。)passwd -l USER
锁定帐户密码:不接受任何密码。仍然可以通过其他方式登录,例如 ssh 密钥或 sudo。usermod -e 1 USER
锁定帐户(通过将密码的到期日期设置为过去的日期):无法通过任何服务登录该帐户。
我假设您指的是第二个含义:您已经使这些帐户无法使用密码登录,但仍然可以通过 ssh 使用密钥或使用 sudo 进行访问。
如果您禁用了帐户的密码,您将无法再使用 sudo。您有一段宽限期,在此期间 sudo 不会再次提示您输入密码。之后,除非您以不寻常的方式更改了默认配置,否则 sudo 会提示您输入密码,您将无法输入密码,因为没有更多密码。这不适用于带有NOPASSWD
标签的 sudoers 规则。
删除密码并不比选择强密码更安全。如果您的 VPS 提供了登录虚拟控制台的方法,请为 root 帐户生成一个长的随机密码,测试它是否有效,打印出来并将这张纸放入您的保险箱中。这样,如果出现问题(例如“哎呀,我把自己锁在了 ssh 之外”或“哎呀,我把自己锁在了 sudo 之外”),你就可以恢复对系统的访问。对于您的帐户,选择一个您可以记住的较短密码,禁用 SSH 登录密码(可选),然后输入密码以sudo
成为 root。从普通帐户到 root 进行额外级别的身份验证非常有用,因为在非 root 帐户中植入未被检测到的木马要困难得多。
答案3
大多数时候没有密码就很好。
是的,如果您只允许通过 ssh 密钥进行身份验证,并且您丢失了 ssh 密钥,则您将无法再登录。在这种情况下,您可以启动一些 Live CD,安装原始系统并添加 root 密码。 (如果您没有这样的选项,也许最好设置 root 密码,以防万一。)
Sudo 可以配置为不询问任何密码。有一个NOPASSWD:
选项可以激活它。 (看man sudoers
。)
请注意,还有许多其他方法可用于身份验证。您可以通过配置来激活它们聚丙烯酰胺系统。