Рейтинг:1

ssh known_hosts больше не использует имена хостов

флаг de

Я сталкиваюсь с этой странной проблемой, когда я подключаюсь к новой машине по ssh, но мой файл known_hosts обновляется своего рода хэшем, но не именем хоста. Это приводит к тому, что я не могу выполнять автозаполнение, когда позже пытаюсь подключиться к той же машине по SSH.

например:

последние 2 строки моего файла known_hosts:

10.1.x.xx ecdsa-sha2-nistp256 AAAAE2VjZHNhLXN ... остаток хеша
db03.test.fqdn.com ecdsa-sha2-nistp256 AAAAE2 ... остальная часть хеша

я подключаюсь к ящику по SSH:

#ssh app01.test.fqdn.com
[~]$ ssh app01.test.fqdn.com
Подлинность хоста app01.test.fqdn.com (10.1.2.92) не может быть установлена.
Отпечаток ключа ECDSA — SHA256:2zbk+M6WbAwjBbtODTklKDqctO/b2JQgirf4LWGh3jE.
Вы уверены, что хотите продолжить подключение (да/нет/[отпечаток пальца])? да
Предупреждение: приложение «app01.test.fqdn.nl,10.1.x.xx» (ECDSA) навсегда добавлено в список известных хостов.
Последний вход: Вт, 15 февраля, 09:58:51 2022 г. из 10.1.x.xx

приложение01:[~]$

мой недавно обновленный файл known_hosts покажет это добавленным:

10.1.x.xx ecdsa-sha2-nistp256 AAAAE2VjZHNhLXN ... остаток хеша
db03.test.fqdn.com ecdsa-sha2-nistp256 AAAAE2 ... остальная часть хеша
|1|xYTWX7K9utTfitsxMOGbPzw9N1o=|oDRxbbY1125i24iuXy5xuDmrLeo= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHYbjef6rxrnsVFFYrgHt05lkWK5R+eXao3Eo4WnYmo/ddzCMhq8S+QPd1EUtwcdGrolzNh8c3HU+NZRX8SSeFs=
|1|ViKCEleTNJ8pFeYaVJBIIYx1TJg=|pq9/mhpijBxbQa8H1NWBhKN3nKU= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHYbjef6rxrnsVFFYrgHt05lkWK5R+eXao3Eo4WnYmo/ddzCMhq8S+QPd1EUtwcdGrolzNh8c3HU+NZRX8SSeFs=

в результате я не могу использовать завершение табуляции при попытке повторного подключения. Но я понятия не имею, где искать.

Koen van der Rijt avatar
флаг de
если я заменю хеш именем хоста, он будет работать как задумано
флаг hr
Я думаю, что это поведение контролируется значением HashKnownHosts в файле ssh_config. Возможно, значение по умолчанию изменилось — или, может быть, вы ранее переопределили его в своем `~/.ssh/config`?
Koen van der Rijt avatar
флаг de
должно быть значение по умолчанию, установленное моим дистрибутивом. Это новая настройка для меня.. Я посмотрю, спасибо!
Doug Smythies avatar
флаг gn
@steeldriver: Да, значение по умолчанию изменилось пару выпусков назад. Очень назойливый.
Рейтинг:2
флаг us

Как прокомментировали другие, HashKnownHosts да приводит к тому, что имя хоста не автозаполняется из-за его хеширования. Добавьте это в «глобальный» раздел, используя Хозяин * чтобы соответствовать всем хостам.

Хозяин *
    HashKnownHosts нет

Хотя это работает, это не удовлетворяет мои потребности, потому что я предпочитаю короткое имя длинному имени, и мой ~/.ssh/config использует Имя хоста для преобразования короткого имени в полное доменное имя. Вот мой конфигурация.

Хозяин *
    HashKnownHosts нет

Хост ns-*
    Имя хоста %h.example.com
    Идентификационный файл ~/.ssh/%h
    ИдентичностиТолько да

При подключении к нс-хост01, в известные_хосты.

ns-host01.example.com, 192.16.0.104 ECDSA-SHA2-NISTP256 AAAAE2VJZHNHLXNOYTITBMLZDHAYNTYAAAAIBMLZDHAYNTYAAABBBOL4AD310E/7OPWINZVOTUO1RSHKIN/PULJVR9NQMAMNEMN310E/7OPWINZVOTUO1RSHKIN/PULJVR9NQMAMNSPLZAX -GERSPRAX-GLAAX-GLAAX-210SPRAX.

Но это не помогает с автозаполнением, которое завершается полным доменным именем. Хотя я мог бы добавить короткое имя вручную, это слишком... вручную. Я не мог найти ничего в Интернете, чтобы добавить короткое и длинное имя хоста с IP-адресом известные_хосты. Тогда я РТФМ.

     -f файл
             Чтение пар хостов или «списка имен адресов» из файла, по одной на строку. Если вместо имени файла указано â-â, ssh-keyscan
             будет считываться со стандартного ввода. Ввод ожидается в формате:

             1.2.3.4,1.2.4.4 имя.мой.домен,имя,n.мой.домен,n,1.2.3.4,1.2.4.4

Имея это в виду, это

echo "192.16.0.104,ns-host01,ns-host01.example.com" | ssh-keyscan -f - -t ecdsa, ed25519

производит следующее, которое содержит короткое и длинное имя хоста и IP.

192.16.0.104,ns-host01,ns-host01.example.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNF+UEbktGXlyYX/t1hvnIvxa+9fB67q15EjBkZUA2EkkTrcvLwASi6np9gqM5dCSpE0CkLeGP75UMFR8LOAgqM=
# 192.16.0.104:22 SSH-2.0-OpenSSH_8.1
192.16.0.104,ns-host01,ns-host01.example.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMibknxgW6cY7JUsKQEB/i188uS9SLx8JoiMg+YD3n7U

Добавьте это к своему известные_хосты и теперь автозаполнение работает как положено, останавливаясь на коротком имени хоста.

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

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