为什么一个UNIX用户有一个密码?

我正在configuration我的树莓派的ssh服务器,以便它只支持基于密钥的身份validation。

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

用户当前被标记为“locking”,因为它没有密码。 这会导致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进行身份validation。

也许我可以设置密码为“密码”,或随机string – 但似乎凌乱。

任何build议?

编辑:

只是为了澄清,我的帐户被locking,因为它没有密码,即

 $ 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解决scheme是正确的:

 usermod -p '*' foo 

从阴影的手册页:

“如果密码字段包含一些不是crypt(3)的有效结果的string,例如!或*,用户将无法使用unix密码login(但用户可以通过login系统其他手段)“。

不,它告诉你账号被锁定 ,而不是没有密码。 您锁定和帐户,以防止用户使用该帐户登录; 即使通过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公钥/私钥登录,它不会阻止你登录。

尝试解锁它

 passwd -u foo 

被锁定而没有密码是两个不同的东西。