使用usermod阻止基于密码的login,允许公共密钥login

usermod的手册页说这关于locking用户帐户:

-L, --lock Lock a user's password. This puts a ´!´ in front of the encrypted password, effectively disabling the password. You can´t use this option with -p or -U. 

我试图用这个来让用户只用公钥login,但是当我locking帐户时,我得到一个密码提示。 当我再次解锁帐户时,公钥起作用。

编辑:说清楚:我想能够仍然使用该密钥login,并以某种方式locking用户在尝试使用密钥时给我一个密码提示

正如手册页所说,这有效地locking了密码 – 因为它使得不可能使用这个帐户上的现有密码。

它不禁用基于密码的login – 您需要为此设置正确的sshd(8)选项。

我假设你的意思是“通过SSH远程login”,因为我不知道如何在本地使用公钥。

locking你的密码与usermod实际上locking你的整个帐户,因为你注意到了。 (系统将密码前面添加的“ !标记为不允许您login的标志。)

如果你打破了你的密码散列,把eg *放在它的前面,你仍然可以使用公钥login。

真的你想要一个可能的控制台login密码等,但禁用密码loginssh。

的/ etc / SSH / sshd_config中:

  PasswordAuthentication no