具有authorized_keys的新用户:如何在设置密码时不询问旧密码?

具有authorized_keys的新用户:如何在设置密码时不询问旧密码?

当我在 Chef 系统中创建用户时,我总是将其公钥上传到.ssh/authorized_keys。当用户首次登录时,他需要“更改”密码。为此,使用存根密码,因此他可以输入“当前”密码。现在看起来是这样的:

ssh user@host 
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for user.
(current) UNIX password: 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Connection to host closed.

当前密码是众所周知的(我告诉你一个秘密:)initial,反正也没用。我怎样才能避免第一次询问密码current?(再强调一下,这是安全的,因为用户已经用他的公钥进行了身份验证)。

答案1

可以使用以下方法删除用户密码:

passwd -d <user> 

(以 root 身份/使用 sudo)。

基于 SSH 密钥的身份验证仍将有效,但设置新密码时不需要密码。我刚刚在 Ubuntu 上测试了这一点。

tom@slappy:~▶ ssh foo@shell
Welcome to Ubuntu 11.04 (GNU/Linux 2.6.35.4-rscloud x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Sun Jan 15 12:10:44 2012 from 12deee6f.bb.sky.com
foo@shell:~$ passwd
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
foo@shell:~$

至于安全性:我不明白为什么这会成为问题。无论是否设置密码,任何拥有私钥的人都可以连接并造成危害。如果您的 sudoers 配置有点不足,那么一旦他们连接后就知道密码可能会使他们造成更大的危害,但在我看来,这表明您有更大的安全问题。

相关内容