手动编辑 /etc/passwd 和 /etc/shadow 后 SSH 身份验证失败

手动编辑 /etc/passwd 和 /etc/shadow 后 SSH 身份验证失败

最近,我需要在我们的 CentOS 服务器上添加一个用户。出于某种原因,我无法使用 useradd 或 userdel 添加或删除它们,因此我手动编辑了 /etc/passwd 和 /etc/shadow,添加了它们。然后我能够以 root 身份使用 passwd 更改他们的密码,一切顺利。

至少我是这么认为的。现在,有些用户根本无法通过 SSH 登录 - 当系统提示输入密码时,他们只能Permission denied, please try again.尝试三次,然后Permission denied (publickey,gssapi-with-mic,password).

这可能与 /etc/passwd 和 /etc/shadow 的更改无关 - 删除对这些文件的更改并不能解决问题。

编辑 1:新用户可以通过 ssh 登录,但一些老用户(包括 root)则不能。问题也只出现在 ssh 上 - 在物理机上登录并使用 su 都可以正常工作。

答案1

我认为手动将用户添加到/etc/passwd/etc/shadow不是一个好主意。这些用户迟早会遇到麻烦。此外,您可能会输入错误记录。我不确定在这种情况下会有什么结果。

如果可能的话,我建议您将这些文件恢复到旧状态,然后重试使用useradd命令添加这些用户。

答案2

运行pwckgrpck分别检查 /etc/passwd 和 /etc/group 文件的格式错误。这还会检查相关的影子文件。

答案3

我想到两个可能的原因:

  1. /etc/passwd您对或的更改/etc/shadow在某种程度上存在缺陷。
  2. 您忘记在更改用户的 uid 后更改用户的主目录所有者chown -R user。文件系统存储的是 uid 号,而不是用户名。

答案4

我不确定这是否是一个原因,但仍然值得尝试:

你有SELinux开启?因为如果上下文发生变化,许多应用程序将无法访问文件。

相关内容