Я хотел бы, чтобы sshd проверял открытый ключ пользователей, а затем запрашивал их пароль, а не только один или другой. Это возможно?
Это наконец доступно с OpenSSH 6.2 (выпущен в марте 2013 г.), используя AuthenticationMethods
вариант конфигурации.
Например, вы можете добавить следующую строку в sshd_config
чтобы потребовать аутентификацию с открытым ключом и паролем:
AuthenticationMethods publickey,password
При входе в систему ssh
и scp
сначала выполнит аутентификацию с открытым ключом, а затем запросит пароль:
$ ssh user@example.org
Authenticated with partial success.
user@example.org's password:
Если у вас есть пароль к вашему файлу закрытого ключа, вам, конечно же, сначала будет предложено это сделать. пример используя PuTTY:
Using username "user".
Authenticating with public key "rsa-key-20131221-user"
Passphrase for key "rsa-key-20131221-user":
Further authentication required
user@example.org's password:
Не сейчас. Но есть несколько патчей, которые должны это добавить.
OpenSSH в RHEL / CentOS 6.3 теперь поддерживает эту функцию, хотя я не могу найти ее упоминания в примечаниях к выпуску OpenSSH. Из Примечания к выпуску RHEL:
Теперь SSH можно настроить так, чтобы требовать несколько способов аутентификации (тогда как ранее SSH допускал несколько способов аутентификации, из которых только один требовался для успешного входа в систему); например, для входа в систему с поддержкой SSH требуется ввести как парольную фразу, так и открытый ключ. В
RequiredAuthentications1
иRequiredAuthentications2
параметры можно настроить в/etc/ssh/sshd_config
файл, чтобы указать аутентификации, необходимые для успешного входа в систему. Например:~]# echo "RequiredAuthentications2 publickey,password" >> /etc/ssh/sshd_config
Для получения дополнительной информации о вышеупомянутом
/etc/ssh/sshd_config
варианты см.sshd_config
справочная страница.
Это возможно, но неуклюже и ограниченно. Сначала вы разрешаете только аутентификацию с открытым ключом. Затем в /etc/ssh/sshd_config
добавить ForceCommand
который выполняет сценарий, который проверяет пароль.
Сценарий нарушит работу SFTP, если вы не проверите, что это команда sftp, и не пропустите ее без пароля.
Я никогда не пробовал это, так что кто-то может увидеть больше проблем.