我正在我的覆盆子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密码登录(但用户可以登录系统通过其他方式)。“
答案 0 :(得分:3)
不,它告诉您帐户已锁定,而不是它没有密码。您锁定和帐户以防止人们使用该帐户登录;甚至通过SSH。您通常只能使用su
或sudo
切换到锁定的帐户。
规则在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
被锁定而没有密码是两回事。