Рейтинг:2

Аутентификация на основе хоста ssh в Fedora 35

флаг il
MMM

Я пытаюсь обойти запрос пароля и использовать аутентификацию на основе хоста.

Клиент находится в shosts.equiv, открытый ключ клиента в ssh_known_hosts и все же заставляет спрашивать пароль

Это связано с SELInux и PAM?

openssh-8.7p1-3.fc35 и openssh-server-8.7p1-3.fc35

Сервер

-rw-r--r--. 1 корневой корень /etc/ssh/ssh_known_hosts    
H,H.lan,H.lan.,192.168.1.86 ssh-rsa <Hpublickey1>
H,H.lan,H.lan.,192.168.1.86 ecdsa-sha2-nistp256 <Hpublickey2>
H,H.lan,H.lan.,192.168.1.86 ssh-ed25519 <Hpublickey3>

и

-rw-r-----. 1 корневой корень /etc/ssh/shosts.equiv
ЧАС
Х.лан
Х.лан.
192.168.1.86

и

сшд -Т | grep ^ хост
аутентификация на основе хоста да
на основе хоста использует имя из пакета, только да
принятые алгоритмы на основе хоста @openssh.com,[email protected],[email protected],[email protected],rsa [email protected],[email protected],ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh [email protected],[email protected],rsa-sha2-512,rsa-sha2-256,ssh-rsa
hostkeyalgorithms ecdsa-sha2-nistp256,[email protected],[email protected],[email protected],ecdsa -sha2-nistp384,[email protected],ecdsa-sha2-nistp521,[email protected],ssh-ed25519,ssh-ed25519-cert-v01 @openssh.com,[email protected],[email protected],rsa-sha2-256,[email protected],rsa -sha2-512,[email protected]
ключ хоста /etc/ssh/ssh_host_rsa_key
ключ хоста /etc/ssh/ssh_host_ecdsa_key
ключ хоста /etc/ssh/ssh_host_ed25519_key
ИспользоватьPAM да

Клиент: имя хоста = H

попытка подключения вызывает запрос пароля

ssh-сервер
пароль пользователя@сервера: 

с отладкой

ssh -o PreferredAuthentications=hostbased -vvv -E /tmp/s.log сервер

Вот содержимое s.log

кот /tmp/s.log 
OpenSSH_8.7p1, OpenSSL 1.1.1l FIPS 24 августа 2021 г.
debug1: Чтение данных конфигурации /home/user/.ssh/config
debug1: Чтение данных конфигурации /etc/ssh/ssh_config
debug3: /etc/ssh/ssh_config строка 55: включая файл /etc/ssh/ssh_config.d/50-redhat.conf глубиной 0
debug1: Чтение данных конфигурации /etc/ssh/ssh_config.d/50-redhat.conf
debug2: проверка совпадения для хост-сервера "final all" с исходным сервером
debug3: /etc/ssh/ssh_config.d/50-redhat.conf строка 3: не соответствует 'final'
debug2: совпадение не найдено
debug3: /etc/ssh/ssh_config.d/50-redhat.conf строка 5: включая файл /etc/crypto-policies/back-ends/openssh.config глубиной 1 (только синтаксический анализ)
debug1: Чтение данных конфигурации /etc/crypto-policies/back-ends/openssh.config
debug3: имена gss kex в порядке: [gss-curve25519-sha256-, gss-nistp256-sha256-, gss-group14-sha256-, gss-group16-sha512-]
debug3: имена kex в порядке: [curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman -group14-sha256,диффи-хеллман-группа16-sha512,диффи-хеллман-группа18-sha512]
debug1: конфигурация запрашивает окончательный проход матча
debug1: повторный анализ конфигурации
debug1: Чтение данных конфигурации /home/user/.ssh/config
debug1: Чтение данных конфигурации /etc/ssh/ssh_config
debug3: /etc/ssh/ssh_config строка 55: включая файл /etc/ssh/ssh_config.d/50-redhat.conf глубиной 0
debug1: Чтение данных конфигурации /etc/ssh/ssh_config.d/50-redhat.conf
debug2: проверка совпадения для хост-сервера "final all" с исходным сервером
debug3: /etc/ssh/ssh_config.d/50-redhat.conf строка 3: соответствует 'final'
debug2: совпадение найдено
debug3: /etc/ssh/ssh_config.d/50-redhat.conf строка 5: включая файл /etc/crypto-policies/back-ends/openssh.config глубина 1
debug1: Чтение данных конфигурации /etc/crypto-policies/back-ends/openssh.config
debug3: имена gss kex в порядке: [gss-curve25519-sha256-, gss-nistp256-sha256-, gss-group14-sha256-, gss-group16-sha512-]
debug3: имена kex в порядке: [curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman -group14-sha256,диффи-хеллман-группа16-sha512,диффи-хеллман-группа18-sha512]
debug3: расширенный UserKnownHostsFile '~/.ssh/known_hosts' -> '/home/user/.ssh/known_hosts'
debug3: расширенный UserKnownHostsFile '~/.ssh/known_hosts2' -> '/home/user/.ssh/known_hosts2'
debug2: разрешение «серверного» порта 22
debug3: ssh_connect_direct: вход
debug1: подключение к серверу [192.168.1.66] порт 22.
debug3: set_sock_tos: установить сокет 4 IP_TOS 0x48
отладка1: соединение установлено.
debug1: файл идентификации /home/user/.ssh/id_rsa type -1
debug1: файл идентификации /home/user/.ssh/id_rsa-cert type -1
debug1: файл идентификации /home/user/.ssh/id_dsa тип -1
debug1: файл идентификации /home/user/.ssh/id_dsa-cert type -1
debug1: файл идентификации /home/user/.ssh/id_ecdsa тип -1
debug1: файл идентификации /home/user/.ssh/id_ecdsa-cert type -1
debug1: файл идентификации /home/user/.ssh/id_ecdsa_sk тип -1
debug1: файл идентификации /home/user/.ssh/id_ecdsa_sk-cert type -1
debug1: файл идентификации /home/user/.ssh/id_ed25519 тип -1
debug1: файл идентификации /home/user/.ssh/id_ed25519-cert type -1
debug1: файл идентификации /home/user/.ssh/id_ed25519_sk тип -1
debug1: файл идентификации /home/user/.ssh/id_ed25519_sk-cert тип -1
debug1: файл идентификации /home/user/.ssh/id_xmss тип -1
debug1: файл идентификации /home/user/.ssh/id_xmss-cert type -1
debug1: строка локальной версии SSH-2.0-OpenSSH_8.7
debug1: удаленный протокол версии 2.0, удаленная версия программного обеспечения OpenSSH_8.7
debug1: compat_banner: match: OpenSSH_8.7 pat OpenSSH* compat 0x04000000
debug2: параметр fd 4 O_NONBLOCK
debug1: Аутентификация на сервере: 22 как «пользователь»
debug3: record_hostkey: найден тип ключа ED25519 в файле /home/user/.ssh/known_hosts:4
debug3: record_hostkey: найден тип ключа RSA в файле /home/user/.ssh/known_hosts:5
debug3: record_hostkey: найден тип ключа ECDSA в файле /home/user/.ssh/known_hosts:6
debug3: load_hostkeys_file: загружено 3 ключа с сервера
debug1: load_hostkeys: fopen /home/user/.ssh/known_hosts2: нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: нет такого файла или каталога
debug3: order_hostkeyalgs: иметь соответствующий тип ключа наилучшего предпочтения [email protected], используя HostkeyAlgorithms дословно
debug3: отправить пакет: введите 20
debug1: SSH2_MSG_KEXINIT отправлен
debug3: получить пакет: введите 20
debug1: SSH2_MSG_KEXINIT получен
debug2: предложение KEXINIT локального клиента
debug2: Алгоритмы KEX: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14 -sha256, диффи-хеллман-группа16-ша512, диффи-хеллман-группа18-ша512, доб-информация-с
debug2: алгоритмы ключа хоста: [email protected],[email protected],[email protected],ecdsa-sha2- [email protected],[email protected],[email protected],rsa-sha2-512-cert-v01@ openssh.com,[email protected],[email protected],ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2- nistp521, [email protected], [email protected], rsa-sha2-512, rsa-sha2-256, ssh-rsa
debug2: шифры ctos: [email protected], [email protected], aes256-ctr, [email protected], aes128-ctr
debug2: шифры сток: [email protected], [email protected], aes256-ctr, [email protected], aes128-ctr
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],hmac -sha2-256,hmac-sha1,[email protected],hmac-sha2-512
debug2: MAC-адреса: [email protected],[email protected],[email protected],[email protected],hmac -sha2-256,hmac-sha1,[email protected],hmac-sha2-512
debug2: сжатие Технический директор: нет, [email protected], zlib
debug2: сжатие stoc: нет, [email protected], zlib
debug2: языки 
debug2: языки сток: 
отладка2: first_kex_follows 0 
отладка2: зарезервировано 0 
debug2: одноранговый сервер, предложение KEXINIT
debug2: Алгоритмы KEX: curve25519-sha256,[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14 -sha256,диффи-хеллман-группа16-ша512,диффи-хеллман-группа18-ша512
debug2: алгоритмы ключей хоста: rsa-sha2-512,rsa-sha2-256,ecdsa-sha2-nistp256,ssh-ed25519
debug2: шифры ctos: [email protected], [email protected], aes256-ctr, [email protected], aes128-ctr
debug2: шифры сток: [email protected], [email protected], aes256-ctr, [email protected], aes128-ctr
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],hmac -sha2-256,hmac-sha1,[email protected],hmac-sha2-512
debug2: MAC-адреса: [email protected],[email protected],[email protected],[email protected],hmac -sha2-256,hmac-sha1,[email protected],hmac-sha2-512
debug2: сжатие Технический директор: нет, [email protected]
debug2: сжатие исходный код: нет, [email protected]
debug2: языки 
debug2: языки сток: 
отладка2: first_kex_follows 0 
отладка2: зарезервировано 0 
debug1: kex: алгоритм: curve25519-sha256
debug1: kex: алгоритм ключа хоста: ssh-ed25519
debug1: kex: server->client шифр: [email protected] MAC: <неявное> сжатие: нет
debug1: kex: client->server шифр: [email protected] MAC: <неявное> сжатие: нет
debug1: kex: curve25519-sha256 нужно = 32 dh_need = 32
debug1: kex: curve25519-sha256 нужно = 32 dh_need = 32
debug3: отправить пакет: введите 30
debug1: ожидается SSH2_MSG_KEX_ECDH_REPLY
debug3: получить пакет: введите 31
debug1: SSH2_MSG_KEX_ECDH_REPLY получен
debug1: ключ хоста сервера: ssh-ed25519 SHA256:Uy8VMmU9e9OnnoJWzLrojVNFaDk6LJiNR9asnFJy57g
debug3: record_hostkey: найден тип ключа ED25519 в файле /home/user/.ssh/known_hosts:4
debug3: record_hostkey: найден тип ключа RSA в файле /home/user/.ssh/known_hosts:5
debug3: record_hostkey: найден тип ключа ECDSA в файле /home/user/.ssh/known_hosts:6
debug3: load_hostkeys_file: загружено 3 ключа с сервера
debug1: load_hostkeys: fopen /home/user/.ssh/known_hosts2: нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts: нет такого файла или каталога
debug1: load_hostkeys: fopen /etc/ssh/ssh_known_hosts2: нет такого файла или каталога
debug1: Хост-сервер известен и соответствует ключу хоста ED25519.
debug1: найден ключ в /home/user/.ssh/known_hosts:4
debug3: отправить пакет: тип 21
debug2: set_newkeys: режим 1
debug1: сменить ключ после 4294967296 блоков
debug1: SSH2_MSG_NEWKEYS отправлено
debug1: ожидается SSH2_MSG_NEWKEYS
debug3: получить пакет: тип 21
debug1: SSH2_MSG_NEWKEYS получен
debug2: set_newkeys: режим 0
debug1: повторный ввод после 4294967296 блоков
debug1: попытается ввести ключ: /home/user/.ssh/id_rsa 
debug1: попытается ввести ключ: /home/user/.ssh/id_dsa 
debug1: попытается ввести ключ: /home/user/.ssh/id_ecdsa 
debug1: попытается ввести ключ: /home/user/.ssh/id_ecdsa_sk 
debug1: попытается ввести ключ: /home/user/.ssh/id_ed25519 
debug1: попытается ввести ключ: /home/user/.ssh/id_ed25519_sk 
debug1: попытается ввести ключ: /home/user/.ssh/id_xmss 
debug2: pubkey_prepare: готово
debug3: отправить пакет: тип 5
debug3: получить пакет: тип 7
debug1: SSH2_MSG_EXT_INFO получен
debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,[email protected],ssh-rsa,rsa-sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256 ,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected]>
debug3: получить пакет: тип 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT получен
debug3: отправить пакет: введите 50
debug3: получить пакет: введите 51
debug1: Аутентификации, которые могут продолжаться: открытый ключ, gssapi-keyex, gssapi-with-mic, пароль, на основе хоста
debug3: начать заново, передать другой список publickey, gssapi-keyex, gssapi-with-mic, password, hostbased
debug3: предпочтительный хост
debug3: authmethod_lookup на основе хоста
debug3: остается предпочтительным: 
debug1: больше нет способов проверки подлинности.
user@server: Отказано в доступе (publickey, gssapi-keyex, gssapi-with-mic, пароль, хост).
dave_thompson_085 avatar
флаг jp
Код клиента (`ssh`) по умолчанию для хоста отключен; если это не включено в файле конфигурации, который вы нам не показали, попробуйте добавить `-o HostBasedAuthentication=yes` (или `true`).
MMM avatar
флаг il
MMM
После прочтения здесь https://www.usenix.org/system/files/login/articles/09_singer.pdf и здесь https://utcc.utoronto.ca/~cks/space/blog/sysadmin/OpenSSHUseDNSErrorAnnoyance это список действий: 1. на стороне клиента установите для HostbasedAuthentication значение true для целевых хостов. Установите EnableSSHKeysign yes Затем на стороне сервера установите для UseDNS значение yes, и ваши клиентские хосты будут в глобальном shosts.equiv, а их ключи — в ssh_known_hosts.
dave_thompson_085 avatar
флаг jp
При проверке источника я согласен, что нужен EnableSSHKeysign. UseDNS не нужен, так как у вас есть hostbasedusesnamefrompackeonly, но это тоже не повредит.

Ответить или комментировать

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