У меня небольшой сервер, и я хотел бы войти в систему с помощью SSH двумя способами:
Я успешно установил libpam-python
, и добавил эту строку в /etc/pam.d/sshd
:
auth requisite /lib/x86_64-linux-gnu/security/pam_python.so /lib/x86_64-linux-gnu/security/my_pam.py
В качестве примера предположим, что мой python pam работает и просто запрашивает другой пароль.
Вот соответствующие параметры в моем /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
К сожалению, это не работает:
# 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).
Мой пароль правильный! Если я верну параметры к значениям по умолчанию, мой пароль будет распознан, и я смогу войти в систему!
Проблема, кажется, в AuthenticationMethods
параметр. Если я удалю, все заработает:
me@client:~$ ssh user@myserver
Python PAM password:
Password OK!
END OF PYTHON PAM.
Password:
user@myserver:~$
Обратите внимание, что классический user@myserver's password:
был заменен кормой Password:
.
К сожалению, даже если это сработает, я не могу выбрать порядок двух методов (мне нужен обратный порядок), а классический метод пароля, похоже, был заменен версией PAM, которую я не знаю, поэтому беспокоюсь мне немного.
Как я могу решить эту проблему?