A ordem das operações que fazem com que o prompt da senha expirada seja o seguinte:
- O SSH executa o estágio PAM
account
, que verifica se a conta existe e é válida. O estágioaccount
percebe que a senha expirou e informa o SSH.
O - SSH realiza a autenticação baseada em chave. Ele não precisa do PAM para isso, por isso não executa o estágio
auth
. Em seguida, configura a sessão de login do SSH e executa o estágio PAMsession
. - Em seguida, o SSH lembra que o PAM informou que a senha expirou, imprime uma mensagem de aviso e solicita ao PAM que o usuário altere a senha. O SSH então desconecta.
Tudo isso é feito pelo SSH, e não vejo nenhuma opção de SSH para configurar esse comportamento. Então, a menos que você queira construir uma versão customizada do SSH e / ou do PAM, a única opção que vejo é evitar que o PAM relate a senha expirada para o SSH. Se você fizer isso, desabilitará completamente as verificações de senhas expiradas pelo SSH , mesmo se o usuário estiver efetuando login através de SSH com uma senha. Outros métodos de login (não SSH) ainda verificarão a expiração da senha.
Seu arquivo pam.d/sshd
atual tem uma entrada account include common-account
. Eu presumo que exista um arquivo common-account
que contém uma referência a pam_unix.so
. Esta é a linha que verifica uma senha expirada.
Você provavelmente não quer tocar no arquivo common-account
, já que ele é usado para outros métodos de login. Em vez disso, você deseja remover o include
do seu arquivo pam.d/sshd
. Se houver outras funções em common-account
além de pam_unix.so
, você provavelmente desejará colocá-las diretamente em pam.d/sshd
.
Finalmente, lembre-se de que isso é uma modificação na segurança do seu sistema e você não deve confiar cegamente em mim para lhe dar bons conselhos. Leia sobre como o PAM funciona se você não estiver familiarizado com isso. Alguns locais iniciais podem ser man 7 PAM
, man 5 pam.conf
e man 8 pam_unix
.