为什么UNIX用户必须有密码?

时间:2014-08-09 09:27:02

标签: linux unix ssh public-key-encryption openssh

我正在我的覆盆子pi上配置ssh服务器,以便它只支持基于密钥的身份验证。

我在服务器上创建了一个用户,并使用我的公钥和正确的权限设置了〜/ .ssh目录。

用户当前标记为“已锁定”,因为它没有密码。这会导致openssh拒绝连接。

# /var/log/auth.log

Aug  9 09:05:26 raspberrypi sshd[6875]: User foo not allowed because account is locked
Aug  9 09:05:26 raspberrypi sshd[6875]: input_userauth_request: invalid user foo [preauth]
Aug  9 09:05:26 raspberrypi sshd[6875]: Connection closed by 192.168.0.4 [preauth]

理想情况下,我不想要密码。我已经通过PKI验证了。

也许我可以将密码设置为“密码”或随机字符串 - 但这看起来很麻烦。

有什么建议吗?

编辑:

为了澄清,我的帐户已被锁定,因为它没有密码,即

$ passwd -u foo
passwd: unlocking the password would result in a passwordless account.
You should set a password with usermod -p to unlock the password of this account.

Petesh解决方案是正确的:

usermod -p '*' foo

来自阴影的手册页:

“如果密码字段包含某些不是crypt(3)的有效结果的字符串,例如!或*,则用户将无法使用unix密码登录(但用户可以登录系统通过其他方式)。“

2 个答案:

答案 0 :(得分:3)

不,它告诉您帐户已锁定,而不是它没有密码。您锁定和帐户以防止人们使用该帐户登录;甚至通过SSH。您通常只能使用susudo切换到锁定的帐户。

规则在shadow手册页中描述:

  

例如,如果密码字段包含的某些字符串不是crypt(3)的有效结果!或*,用户将无法使用unix密码登录(但用户可以通过其他方式登录系统)。

逻辑*永远不会与密码匹配,但并不意味着锁定,而!表示已锁定。

此加密密码通常存储在影子文件中,可以使用passwd命令或usermod命令进行更改。如果您希望将密码更改为不起作用的密码,则可以更改为以*开头的密码,该密码永远不会与密码匹配,例如,使用usermod命令:

bubble ~ [2]> sudo usermod -L freerad
bubble ~> sudo grep freerad /etc/shadow
freerad:!*:16197:0:99999:7:::

这是一个锁定的freerad帐户。即使您使用公钥/私钥对,ssh也应该阻止您使用该帐户登录。

bubble ~> sudo usermod -p '*' freerad
bubble ~> sudo grep freerad /etc/shadow
freerad:*:16291:0:99999:7:::

此freerad帐户具有永不匹配的密码。该帐户未锁定,但如果您使用ssh公钥/私钥登录,则不会阻止您登录。<​​/ p>

答案 1 :(得分:0)

尝试使用

解锁
passwd -u foo

被锁定而没有密码是两回事。