Многие сервисы (например, GitHub) используют широкий диапазон IP-адресов и, очевидно, один и тот же открытый ключ.
Как добавить диапазон IP (желательно один) в файл known_hosts?
Для примера GitHub он использует следующие диапазоны:
- 207.97.227.224/27
- 173.203.140.192/27
- 204.232.175.64/27
- 72.4.117.96/27
- 192.30.252.0/22
И ключ это:
AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa + PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31 / YMF + Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB + weqqUUmpaaasXVal72J + UX2B + 2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi / w4yCE6gbODqnTWlg7 + wC604ydGXA8VJiS5ap43JXiUFFAaQ ==
Ответы:
Как отмечено в других ответах, known_hosts не поддерживает диапазоны IP-адресов. Это, однако, поддерживает подстановочные знаки. Конечно, подстановочные знаки не совсем одно и то же, поэтому вам нужно быть очень осторожным с тем, как вы используете их в IP-адресах, но в конкретном случае с Github это можно сделать безопасно.
Ситуация, кажется, стала проще, так как вопрос был задан. Согласно официальной документации Github, используется только один диапазон IP-адресов (по крайней мере, для IPv4). Это диапазон 192.30.252.0/22. Это дает 1020 возможных IP-адресов, которые удобно охватывают весь возможный диапазон для последнего октета всего в четырех различных C-блоках.
От
man 8 sshd
, это то, с чем мы должны работать в known_hosts:Используя эту информацию, мы можем создать запись с использованием подстановочного знака * для последнего октета, который соответствует всем возможным конечным точкам Github (и ТОЛЬКО этим конечным точкам), следующим образом:
Если диапазон IP, который вы должны были построить, не заполнял полный блок C и, следовательно, все возможные значения для октета, было бы невозможно использовать подстановочные знаки для такого точного соответствия.
источник
Я не думаю, что вы можете легко добавить диапазоны, но я думаю (не могу проверить это прямо сейчас), что тот же эффект может быть достигнут путем добавления следующего в .ssh / ssh_config:
Затем вы должны добавить ключ в файл known_hosts под именем github-server-pool.github.com.
Предположение: хост github-server-pool.github.com не существует или никогда не подключается через SSH.
Идея заключается в том, что ssh будет использовать ключ github-server-pool.github.com в качестве ключа для поиска открытого ключа хоста для всех хостов домена github.com.
источник
В
known_hosts
файле отсутствует поддержка наборов IP-адресов . Вам придется иметь одну строку на адрес.Хотя часть имени узла в записях по умолчанию хэшируется, это делается только для конфиденциальности, так что кто-то, кто завладеет вами
.known_hosts
, не сможет легко узнать, к каким узлам вы подключались. (Они все еще могут проверять догадки.) Вы можете использовать простое имя хоста или IP-адрес.Обратите внимание, что это может добавить дубликаты.
источник
Похоже, в SSH нет понятия диапазонов IP-адресов для known_hosts. Я думаю, что предполагается, что каждый хост будет иметь уникальный ключ по соображениям безопасности.
Два способа, которыми я могу воспользоваться, чтобы предварительно заполнить ваши известные_хосты:
ssh-keyscan
- Напишите краткий сценарий, чтобы перебрать все эти адреса и либо передать его,ssh-keyscan
либо файл дляssh-keyscan
чтения.ssh-keyscan
может сканировать несколько хостов за вызов, либо указав в одной строке, либо указав список хостов.Заполните
known_hosts
себя сценарием или редактором. Формат довольно прост, если вы используете версию без хеширования. Это:имя хоста, IP-адрес ssh-keytype key
hostname
имя хоста, с которым вы связываетесь, и будет одинаковым для всех адресов GitHub.IP address
будет то, что скрипт будет проходить через.key
это ключ, который вы предоставили выше.Ни один из них не элегантен, но я думаю, что люди из SSH предположили, что никто не будет делать то, что делает GitHub.
источник
Привет, я нашел сценарий от Жиля весьма полезным, но
0.0.0.0/24
ограничение работало только до сетей , я расширил сценарий для работы с большими сетями,0.0.0.0/16
возможно, он будет полезен для кого-то еще.источник