Muchos servicios (como GitHub) utilizan una amplia gama de IP y, obviamente, la misma clave pública.
¿Cómo puedo agregar un rango de IP (preferiblemente en un solo) al archivo known_hosts?
Para el ejemplo de GitHub, utiliza los siguientes rangos:
- 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
Y la clave es:
AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa + PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31 / YMF + Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB + weqqUUmpaaasXVal72J + UX2B + 2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi / w4yCE6gbODqnTWlg7 + wC604ydGXA8VJiS5ap43JXiUFFAaQ ==
Respuestas:
Como se señaló en otras respuestas, known_hosts no tiene soporte para rangos de direcciones IP. Sin embargo, admite comodines. Por supuesto, los comodines no son exactamente lo mismo, por lo que debe tener mucho cuidado con la forma en que los usa en las direcciones IP, pero en el caso particular de Github, esto se puede hacer de manera segura.
La situación parece haberse vuelto más simple desde que se hizo la pregunta. Según la documentación oficial de Github, solo se utiliza un rango de direcciones IP (al menos en lo que respecta a IPv4). Este es el rango 192.30.252.0/22. Eso hace 1020 posibles direcciones IP que abarcan convenientemente todo el rango posible para el último octeto en solo cuatro bloques C diferentes.
De
man 8 sshd
, esto es con lo que tenemos que trabajar en known_hosts:Usando esta información, podemos construir una entrada usando el comodín * para el último octeto que coincida con todos los puntos finales posibles de Github (y SOLO esos puntos finales) de esta manera:
Si el rango de IP que necesita construir no llenó un bloque C completo y, por lo tanto, todos los valores posibles para un octeto, sería imposible usar comodines para una coincidencia tan precisa.
fuente
No creo que pueda agregar fácilmente los rangos, pero creo (no puedo probar esto en este momento) que se puede lograr el mismo efecto agregando lo siguiente a .ssh / ssh_config:
A continuación, agregaría la clave al archivo known_hosts con el nombre github-server-pool.github.com.
Supuesto: el host github-server-pool.github.com no existe o nunca está conectado a través de SSH.
La idea detrás de esto es que ssh usará la clave github-server-pool.github.com como la clave para buscar la clave de host pública para todos los hosts del dominio github.com.
fuente
No hay soporte para conjuntos de direcciones IP en el
known_hosts
archivo. Tendrás que tener una línea por dirección.Aunque la parte del nombre de host de las entradas está en hash de forma predeterminada, esto es solo por privacidad para que alguien que se apodere de usted
.known_hosts
no pueda descubrir fácilmente a qué hosts se ha conectado. (Todavía pueden verificar las suposiciones). Puede usar un nombre de host o una dirección IP.Tenga en cuenta que esto puede agregar duplicados.
fuente
SSH parece no tener un concepto de rangos de IP para los hosts conocidos. Creo que se supone que cada host tendría una clave única por razones de seguridad.
Puedo ver dos formas de rellenar previamente sus hosts_conocidos:
ssh-keyscan
- Escriba una secuencia de comandos breve para iterar a través de todas esas direcciones y alimentarlassh-keyscan
o un archivo parassh-keyscan
leer.ssh-keyscan
puede escanear múltiples hosts por invocación, ya sea especificando en una línea o especificando una lista de los hosts.Poblar
known_hosts
con un guión o editor. El formato es bastante simple si usa la versión sin hash. Es:nombre de host, dirección IP ssh-keytype key
hostname
es el nombre de host con el que contacta, y sería el mismo para todas las direcciones de GitHub.IP address
sería lo que un guión iteraría.key
es la clave que proporcionó anteriormente.Tampoco es elegante, pero creo que la gente de SSH asumió que nadie haría lo que GitHub está haciendo.
fuente
Hola, encontré que el script de Gilles era bastante útil, pero solo trabajar para redes
0.0.0.0/24
era una limitación, extendí el script para que funcione con redes más grandes hasta que0.0.0.0/16
quizás sea útil para otra persona.fuente