когда я создаю пользователя в системе с помощью 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
пароль в первый раз? (Чтобы подчеркнуть это еще больше, это безопасно, потому что пользователь уже аутентифицирован своим открытым ключом).
Пароль пользователя можно удалить с помощью:
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 немного не хватает, но это указывает на то, что, на мой взгляд, у вас в любом случае есть более серьезные проблемы с безопасностью.