Я пытаюсь получить учетную запись пользователя, чтобы можно было использовать как только закрытый ключ, так и закрытый ключ + пароль. Пароль действительно должен быть достаточно длинным для атак на основе возможностей, так как я бы хотел, чтобы этот вид аутентификации использовался на моем телефоне на базе 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