Назад | Перейти на главную страницу

Вынужден изменить пароль с истекшим сроком действия при использовании ключа ssh

Я работаю в среде, где у меня есть учетная запись на нескольких машинах 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

Ссылки

Просроченный пароль и логин на основе ключа SSH

страница руководства pam_unix

Вам все равно придется менять его каждые 30 дней. Администратор может изменить это поведение, изменив максимальное количество дней, в течение которых пароль остается действительным, используя passwd -x или chage -E или даже usermod -e.