Назад | Перейти на главную страницу

Хранить пароль SSH для комбинированной аутентификации закрытого ключа и пароля

Я пытаюсь получить учетную запись пользователя, чтобы можно было использовать как только закрытый ключ, так и закрытый ключ + пароль. Пароль действительно должен быть достаточно длинным для атак на основе возможностей, так как я бы хотел, чтобы этот вид аутентификации использовался на моем телефоне на базе Android.

Однако на моем домашнем компьютере я не вижу необходимости включать аутентификацию по паролю. Таким образом, я хотел бы использовать что-то похожее на sshpass, которое может хранить пароль. Когда я попытался его настроить, я получил следующее сообщение об ошибке, предположительно из-за аутентификации с закрытым ключом:

Authenticated with partial success.

А потом меня все равно снова спрашивают пароль.

Что я использую в своем SSHd -config:

Match User x
AuthenticationMethods "publickey,password" "publickey,keyboard-interactive

Конечно, я знаю, что могу установить пароль для закрытого ключа, но я думаю, что, хотя он в настоящее время не защищен, я, возможно, захочу защитить его более надежным паролем или другим методом в будущем, отличным от злонамеренного использования на основе возможностей.

Как описано в ssh_config(5), AuthenticationMethods:

Например, "publickey,password publickey,keyboard-interactive»Потребует от пользователя пройти аутентификацию с открытым ключом, за которой следует интерактивная аутентификация с помощью пароля или клавиатуры. На каждом этапе предлагаются только методы, следующие в одном или нескольких списках, поэтому в этом примере невозможно будет попытаться выполнить аутентификацию с использованием пароля или интерактивную клавиатуру до открытого ключа.

Вам либо требуется аутентификация по паролю после аутентификации с открытым ключом, либо нет. У вас не может быть обоих одинаковых условий, так как publickey,password publickey всегда будет разрешать аутентификацию только с открытым ключом, будучи равным publickey.

Это если у вас нет другие критерии соответствия чем имя пользователя.

Аргументы в пользу Match одна или несколько пар критериев-шаблон или один токен Все что соответствует всем критериям. Доступные критерии: User, Group, Host, LocalAddress, LocalPort, и Address. Шаблоны соответствия могут состоять из отдельных записей или списков, разделенных запятыми, и могут использовать операторы подстановки и отрицания, описанные в разделе ШАБЛОНОВ ssh_config (5).

Шаблоны в Address критерии могут дополнительно содержать адреса для сопоставления в формате адреса / маски CIDR, например 192.0.2.0/24 или 2001:db8::/32. Обратите внимание, что предоставленная длина маски должна соответствовать адресу - ошибочно указывать длину маски, которая слишком велика для адреса, или длину маски, установленную в этой части адреса хоста.

Если у вас есть статический IP-адрес дома или статический IP-адрес на работе, вы можете использовать его в качестве другого критерия. Лучшая практика - использовать более требовательные методы аутентификации в ненадежных сетях.

Вот пример использования трех различных комбинаций методов аутентификации в четырех разных условиях. (Джон и Джейн - пользователи, принадлежащие группе employee.)

# Static IP address, John at home
Match User john Address 198.51.100.78
AuthenticationMethods publickey

# Static IP address, Jane at home
Match User jane Address 192.0.2.90
AuthenticationMethods publickey

# Require also password for all employees on company network 203.0.113.0/24
Match Group employee Address 203.0.113.0/24
AuthenticationMethods publickey,password

# Require public key and Google Authenticator for employees anywhere else
Match Group employee
ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no

В Google Authenticator в последнем примере требуется libpam-google-authenticator установлен и настроен в /etc/pam.d/sshd с линией auth required pam_google_authenticator.so.


Другой способ для одного пользователя без доступа к sshd_config, предполагая publickey аутентификация без password Используемая аутентификация: используйте один и тот же ключ без пароля на домашнем компьютере и с паролем на работе. В зависимости от ситуации с исходным ключом:

  • Удалить кодовую фразу с помощью openssl rsa -in work-encrypted.key -out open-home.key
  • Добавить кодовую фразу с openssl rsa -des3 -in open-home.key -out work-encrypted.key