Comme indiqué dans d'autres réponses, known_hosts ne prend pas en charge les plages d'adresses IP. Il prend cependant en charge les caractères génériques. Bien sûr, les caractères génériques ne sont pas tout à fait la même chose, vous devez donc faire très attention à la façon dont vous les utilisez dans les adresses IP, mais dans le cas particulier de Github, cela peut être fait en toute sécurité.
La situation semble s'être simplifiée depuis la question posée. Selon la documentation officielle de Github, il n'y a qu'une seule plage d'adresses IP utilisée (au moins en ce qui concerne IPv4). Il s'agit de la gamme 192.30.252.0/22. Cela donne 1020 adresses IP possibles qui couvrent commodément toute la plage possible pour le dernier octet en seulement quatre blocs C différents.
À partir de man 8 sshd
, c'est ce avec quoi nous devons travailler dans known_hosts:
Les noms d'hôtes sont une liste de modèles séparés par des virgules ( *' and
? 'Agissent comme des caractères génériques); chaque modèle à son tour est comparé au nom d'hôte canonique (lors de l'authentification d'un client) ou au nom fourni par l'utilisateur (lors de l'authentification d'un serveur). Un modèle peut également être précédé de !' to indicate negation: if the host name matches a negated pattern, it is not accepted (by that line) even if it matched another pattern on the line. A hostname or address may optionally be enclosed within
['et ]' brackets then followed by
:' et d'un numéro de port non standard.
En utilisant ces informations, nous pouvons construire une entrée en utilisant le caractère générique * pour le dernier octet qui correspond à tous les points d'extrémité Github possibles (et UNIQUEMENT ces points d'extrémité) comme ceci:
github.com,192.30.252.*,192.30.253.*,192.30.254.*,192.30.255.* ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==
Si la plage IP que vous deviez construire ne remplissait pas un bloc C complet et donc toutes les valeurs possibles pour un octet, il serait impossible d'utiliser des caractères génériques pour une correspondance aussi précise.