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

Я работаю в среде, где у меня есть учетная запись на нескольких Linux-машинах, где учетные записи и пароли управляются независимо (нет активного каталога / LDAP / etc), а срок действия паролей истекает каждые 30 дней. Поэтому я подумал, что будет проще управлять моей аутентификацией с помощью ключей ssh. Я могу пройти аутентификацию, используя свои ключи ssh. Однако я обнаружил, что, когда срок действия моего пароля истекает, мне предлагается изменить пароль, когда я пытаюсь подключиться с помощью моего ключа ssh. Это нормальное поведение? Я думал, что весь смысл использования пар ключей состоит в том, чтобы обойти использование вашего пароля. Разве мне не нужно изменить пароль, только если я войду с паролем?

2
задан 4 November 2015 в 21:24
2 ответа

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

0
ответ дан 3 December 2019 в 14:37

Я наткнулся на решение этой проблемы из ссылки ниже. Решение требует авторизации для редактирования некоторых файлов 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

0
ответ дан 3 December 2019 в 14:37

Теги

Похожие вопросы