Admin Libre - Administración de sistemas y redes

Como enviar las huellas SSH con netcat
Por Francisco Gaitán el 20 de Septiembre de 2023

Cuando conectas por primera vez a un servidor con OpenSSH se muestra una huella y pregunta si confías en ella o no. Salvo que la hayas guardado previamente o actives la verificación por DNS con la opción VerifyHostKeyDNS no sabes si estás conectando con el servidor original o con un intermediario.

La solución más común consiste en enviar al proveedor de hosting tu clave pública SSH de forma que al crear una instancia ésta viene con dicha clave pública incorporada con lo que la conexión es segura. El problema está cuando haces una instalación personalizada.

Tengo estos dos hosts:

  • foo.example.com es el host desde el que inicio la conexión SSH
  • bar.example.com es un servidor con OpenBSD recién instalado

Solución

  1. Exportar las huellas SSH del servidor a un archivo de texto
  2. Enviarlas al host desde el que inicio la conexión SSH
  3. Comprobar que el archivo recibido es idéntico al enviado
  4. Adaptarlo y añadirlo al archivo ~/.ssh/known_hosts

Las operaciones en el servidor bar las realizaré desde la consola que facilita el proveedor de hosting, normalmente es una consola HTML aunque hay proveedores como OpenBSD Amsterdam que dan consola de texto a través de vmctl(8).

Configuro foo de forma que tan sólo el servidor bar.example.com podrá conectarse por el puerto 1234. Si la conexión es IPv6 hay que especificarlo a nc(1) con el parámetro -6. Al tratarse de huellas SSH públicas no hay ningún problema por transmitirlas en texto plano.

bar$ ssh-keyscan localhost > bar-keyscan.txt
foo$ nc -l 1234 > bar-keyscan.txt
bar$ nc -N foo.example.com 1234 < bar-keyscan.txt 
foo$ sha256 bar-keyscan.txt
SHA256 (bar-keyscan.txt) = 013beda7e235e99b46766d472479d45121ffa26bceda8302bdf72abe8c972574
bar$ sha256 bar-keyscan.txt
SHA256 (bar-keyscan.txt) = 013beda7e235e99b46766d472479d45121ffa26bceda8302bdf72abe8c972574
foo$ sed -i 's/localhost/bar.example.com/g' bar-keyscan.txt
foo$ cat bar-keyscan.txt >> ~/.ssh/known_hosts

Si todo ha ido bien reconocerá la huella y podrás conectarte al servidor con seguridad:

foo$ ssh bar.example.com

Destacado

Contacto

Si has encontrado algún error o quieres comentarme algo mándame un correo a webmaster@adminlibre.org