Я работаю в среде, где у меня есть учетная запись на нескольких машинах Linux, где учетные записи и пароли управляются независимо (нет активного каталога / LDAP / и т. Д.), А срок действия паролей истекает каждые 30 дней. Поэтому я подумал, что будет проще управлять моей аутентификацией с помощью ключей ssh. Я могу пройти аутентификацию, используя свои ключи ssh. Однако я обнаружил, что, когда срок действия моего пароля истекает, мне предлагается изменить пароль, когда я пытаюсь подключиться с помощью моего ключа ssh. Это нормальное поведение? Я думал, что весь смысл использования пар ключей состоит в том, чтобы обойти использование вашего пароля. Разве меня не должны попросить сменить пароль, только если я войду с паролем?
Я наткнулся на решение этого вопроса по ссылке ниже. Решение требует авторизации для редактирования некоторых pam
файлы.
Причиной проблемы является порядок операций, который вызывает запрос пароля с истекшим сроком действия, как описано здесь:
- SSH запускает этап учетной записи PAM, который проверяет, что учетная запись существует и действительна. Этап учетной записи замечает, что срок действия пароля истек, и сообщает об этом SSH.
- SSH выполняет аутентификацию на основе ключей. Для этого ему не нужен PAM, поэтому он не запускает этап аутентификации. Затем он устанавливает сеанс входа в систему SSH и запускает этап сеанса PAM.
- Затем SSH запоминает, что PAM сообщил ему, что срок действия пароля истек, печатает предупреждающее сообщение и просит PAM изменить пароль. Затем SSH отключается.
Более свежие версии pam_unix
есть no_pass_expiry. На странице руководства:
no_pass_expiry
When set ignore password expiration as defined by the shadow entry of the user. The option has an effect
only in case pam_unix was not used for the authentication or it returned authentication failure meaning
that other authentication source or method succeeded. The example can be public key authentication in
sshd. The module will return PAM_SUCCESS instead of eventual PAM_NEW_AUTHTOK_REQD or PAM_AUTHTOK_EXPIRED.
На сервере CentOS 7 я установил /etc/pam.d/password-auth
и /etc/pam.d/system-auth
со следующими строками:
account required pam_unix.so no_pass_expiry
password sufficient pam_unix.so sha512 shadow nullok remember=5 no_pass_expiry
Ссылки
Вам все равно придется менять его каждые 30 дней. Администратор может изменить это поведение, изменив максимальное количество дней, в течение которых пароль остается действительным, используя passwd -x
или chage -E
или даже usermod -e
.