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

SSH: Почему мне нужно повторно проверять отпечаток пальца при подключении к тому же серверу из другого домена?

Далее я говорю о клиенте OpenSSH, установленном по умолчанию в debian.

Я хотел бы иметь несколько (под) доменов, указывающих на мой сервер (а) (то есть несколько на сервер), то есть database.example.com, webserver.example.com и т.д. не знаю наизусть, какая служба работает на каком сервере. Я хочу управлять этим с помощью DNS, имея субдомен для каждой службы, а затем я могу использовать этот субдомен для SSH на правильном сервере, не запоминая, на каком сервере работает служба.

Проблема в том, что отпечаток пальца содержит доменное имя. Итак, если database.example.com и webserver.example.com указывают на один и тот же IP-адрес, и я использовал database.example.com и проверил отпечаток пальца (поэтому он добавлен в known_hosts), тогда мне нужно снова выполнить проверку, если я подключусь по SSH сервер через webserver.example.com позже.

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

И если да, может ли это вызвать проблему безопасности?

И почему это вообще реализовано именно так? Также, насколько я понимаю, отпечаток пальца получен из открытого ключа сервера, для которого только сервер имеет соответствующий закрытый ключ. Так зачем вообще нужно включать что-то вроде домена или IP? Разве это не предотвращает меня только от случайного подключения к одному из других моих серверов, которые я сохранил в known_hosts?

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

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

заранее спасибо

Изменить: я также нашел эта почта теперь предлагаю отключить StrictHostKeyChecking но, насколько я понимаю, это позволяет добавлять все отпечатки пальцев по ssh, что, насколько я понимаю, является проблемой с точки зрения безопасности. Я хочу, чтобы, даже если я использую домен для подключения к серверу, IP-адрес использовался для проверки отпечатков пальцев (ssh в любом случае разрешает сам IP-адрес, что вы можете увидеть при использовании -vvv флаг)

Вы можете разделять записи в ~/.ssh/known_hosts

Ты можешь сделать это:

database.example.com,webserver.example.com,database,webserver,10.1.2.3 ssh-rsa …

Вы можете добавить альтернативные имена и IP-адреса для хоста в этом формате с разделителями-запятыми.

Здесь используются реальные имена хостов, а не Host псевдонимы, которые вы можете создать в своем ~/.ssh/config файл.

Найдите повторяющиеся записи в known_hosts

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

Вот его результат для ключа Github (который, как вы могли заметить, я немного свернул, но недостаточно). Коллизии перечислены по номеру строки:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTt
...JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
    72: github.com,gist.github.com,192.30.252.128,192.30.252.129,192.30.252.130,192.30.252.131,192.30.252.140,192.30.252.141,192.30.252.142,192.30.252.143
    93: 192.30.253.113
    95: 192.30.253.118
    96: 192.30.253.119
    97: 192.30.253.112
    109: 192.30.255.113
    110: 192.30.255.112
    155: 140.82.113.3
    158: 140.82.114.4
    161: 140.82.113.4

Проверить с помощью ssh localhost

Еще я часто делаю так, чтобы не сохранить отпечаток пальца для localhost. Таким образом, я могу подключиться по ssh к серверу с хоста, на котором сохранен и доверен отпечаток пальца, запустить ssh localhost с этого сервера и сопоставьте этот отпечаток с отпечатком, предложенным клиентом, для которого он еще не сохранен. Однако обратите внимание на разные типы ключей (или форматы отпечатков пальцев). (Это полезно только потому, что дайджест, предоставленный ssh клиент отличается от формата, хранящегося в known_hosts файлы.)