¿Cómo puedo agregar una clave de host al known_hosts
archivo SSH de forma segura?
Estoy configurando una máquina de desarrollo, y quiero (por ejemplo) evitar que aparezca un git
mensaje cuando clono un repositorio para github.com
usar SSH.
Sé que puedo usar StrictHostKeyChecking=no
(por ejemplo, esta respuesta ), pero eso no es seguro.
Hasta ahora, he encontrado ...
GitHub publica sus huellas digitales de clave SSH en https://help.github.com/articles/github-s-ssh-key-fingerprints/
Puedo usar
ssh-keyscan
para obtener la clave de hostgithub.com
.
¿Cómo combino estos hechos? Dada una lista prepoblada de huellas digitales, ¿cómo verifico que la salida de ssh-keyscan
se pueda agregar al known_hosts
archivo?
Supongo que estoy preguntando lo siguiente:
¿Cómo obtengo la huella digital de una clave devuelta por ssh-keyscan
?
Supongamos que ya he sido MITM-ed para SSH, pero que puedo confiar en la página GitHub HTTPS (porque tiene una cadena de certificados válida).
Eso significa que tengo algunas claves de host SSH (sospechosas) (de ssh-keyscan
) y algunas huellas digitales de clave (de confianza). ¿Cómo verifico uno contra el otro?
Relacionado: ¿cómo hago el hash de la parte del host de la salida ssh-keyscan
? ¿O puedo mezclar hosts con hash / sin hash known_hosts
?
StrictHostKeyChecking=no
es vulnerable a MITM. ¿Esssh-keyscan
seguro contra MITM?Respuestas:
La parte más importante de agregar de forma "segura" una clave al
known_hosts
archivo es obtener la huella digital de la clave del administrador del servidor. La huella digital clave debería verse así:En el caso de GitHub, normalmente no podemos hablar directamente con un administrador. Sin embargo, ponen la clave en sus páginas web para que podamos recuperar la información desde allí.
Instalación manual de llaves
1) Tome una copia de la clave del servidor y obtenga su huella digital. NB: Haga esto antes de verificar la huella digital.
2) Obtenga una copia de la huella digital del administrador del servidor; en este caso, vaya a la página con la información en github.com
3) Compare las claves de las dos fuentes
Al colocarlos directamente uno encima del otro en un editor de texto, es fácil ver si algo ha cambiado
(Tenga en cuenta que la segunda clave ha sido manipulada, pero se parece bastante a la original; si sucede algo como esto, está bajo un ataque grave y debe comunicarse con un experto en seguridad de confianza).
Si las teclas son diferentes, cancele el procedimiento y póngase en contacto con un experto en seguridad.
4) Si las claves se comparan correctamente, entonces debe instalar la clave que ya descargó
O para instalar para todos los usuarios en un sistema (como root):
Instalación automatizada de llaves
Si necesita agregar una clave durante un proceso de compilación, entonces debe seguir los pasos 1-3 del proceso manual anterior.
Una vez hecho esto, examine el contenido de su
github-key-temp
archivo y cree un script para agregar esos contenidos a su archivo de hosts conocidos.Ahora debería deshacerse de cualquier
ssh
comando que se hayaStrictHostKeyChecking
deshabilitado.fuente
Puede mezclar entradas hash / no hashed en su archivo conocido_hosts.
Entonces, si desea agregar la clave github, puede hacer lo siguiente:
ssh-keyscan github.com >> ~/.ssh/known_hosts
Si quieres hash, agrega -H
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
fuente
La forma más fácil es buscar manualmente las claves usando
ssh-keyscan
, verificarlas manualmente:Y agréguelos a su script, que luego llevará la clave pública "autorizada".
fuente