Eu tenho um servidor pequeno e gostaria de poder fazer o login usando o SSH com 2 métodos:
Instalei com sucesso libpam-python
e adicionei esta linha a /etc/pam.d/sshd
:
auth requisite /lib/x86_64-linux-gnu/security/pam_python.so /lib/x86_64-linux-gnu/security/my_pam.py
Por exemplo, vamos supor que meu python pam funcione e apenas peça outra senha.
Aqui estão os parâmetros relevantes no meu /etc/ssh/sshd_config
:
# PAM
UsePAM yes
ChallengeResponseAuthentication yes
# Regular password
PasswordAuthentication yes
PermitEmptyPasswords no
# Authentication Methods
# Either an authorised public key, or the password + another one (python pam).
AuthenticationMethods publickey password,keyboard-interactive:pam
Infelizmente, isso não funciona:
# I am not using an authorized public key
me@client:~$ ssh user@myserver
user@myserver's password:
Permission denied, please try again.
user@myserver's password:
Permission denied, please try again.
user@myserver's password:
Permission denied (publickey,password).
Minha senha está correta! Se eu alterar os parâmetros de volta ao valor padrão, minha senha será reconhecida e eu poderei fazer o login!
O problema parece ser o parâmetro AuthenticationMethods
. Se eu removê-lo, funciona:
me@client:~$ ssh user@myserver
Python PAM password:
Password OK!
END OF PYTHON PAM.
Password:
user@myserver:~$
Observe que o clássico user@myserver's password:
foi substituído por uma popa Password:
.
Infelizmente, mesmo que funcione, não posso escolher a ordem dos 2 métodos (eu queria a ordem inversa), e o método clássico de senha parece ter sido substituído por uma versão do PAM, que eu não sei , assim me incomoda um pouco.
Como posso resolver este problema?
Tags ssh authentication pam