Prueba esto:
ssh-keyscan -t rsa [ip_address]
Tome la salida y péguela en .ssh/known_hosts. Ahora, si quiere hacer hash de los hosts conocidos, haga esto:
ssh-keygen -H
editar: Aquí está la solución de un comando. Utiliza el nombre de host y las direcciones IP y calcula ambos.
ssh-keyscan -Ht rsa [hostname],[IP address] >> known_hosts
La respuesta de kschurig funcionará, pero no es necesariamente la más segura. Obtiene puntos de bonificación por hacer un esfuerzo adicional para permitirle identificar el servidor por más de un URI, es decir, nombre de host y dirección IP. Es decir, podría seguir agregando URI válidos de ese host ampliando la lista delimitada por comas.
Sin embargo, estaba buscando una forma mundana de eludir la interacción manual del host desconocido de clonar un repositorio git como se muestra a continuación y debería ayudar a explicar lo que está sucediendo y cómo puede evitar esta parte de la secuencia de comandos relacionada con SSH:
[email protected]:~$ git clone [email protected]:viperks/viperks-api.git
Cloning into 'viperks-api'...
The authenticity of host 'bitbucket.org (104.192.143.3)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?
Tenga en cuenta la huella digital de la clave RSA...
Entonces, esto es una cosa de SSH, esto funcionará para git sobre SSH y solo cosas relacionadas con SSH en general...
[email protected]:~$ nmap bitbucket.org --script ssh-hostkey
Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-05 10:21 EDT
Nmap scan report for bitbucket.org (104.192.143.3)
Host is up (0.032s latency).
Other addresses for bitbucket.org (not scanned): 104.192.143.2 104.192.143.1 2401:1d80:1010::150
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 1024 35:ee:d7:b8:ef:d7:79:e2:c6:43:9e:ab:40:6f:50:74 (DSA)
|_ 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40 (RSA)
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 42.42 seconds
Primero, instale nmap en su controlador diario. nmap es muy útil para ciertas cosas, como detectar puertos abiertos y esto:verificar manualmente las huellas digitales SSH. Pero, volviendo a lo que estamos haciendo.
Bien. O estoy comprometido en los múltiples lugares y máquinas en los que lo revisé, o la explicación más plausible de que todo está bien es lo que está sucediendo.
Esa 'huella digital' es solo una cadena acortada con un algoritmo unidireccional para nuestra conveniencia humana a riesgo de que más de una cadena se resuelva en la misma huella digital. Sucede, se llaman colisiones.
Independientemente, volvamos a la cadena original que podemos ver en el contexto a continuación.
[email protected]:~$ ssh-keyscan bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
no hostkey alg
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-129
bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-123
no hostkey alg
Entonces, con anticipación, tenemos una forma de solicitar una forma de identificación del host original.
En este punto, somos tan vulnerables de forma manual como automática:las cadenas coinciden, tenemos los datos básicos que crean la huella digital y podríamos solicitar esos datos básicos (para evitar colisiones) en el futuro.
Ahora, para usar esa cadena de una manera que evite preguntar sobre la autenticidad de un host...
El archivoknown_hosts en este caso no utiliza entradas de texto sin formato. Reconocerás las entradas con hash cuando las veas, parecen hashes con caracteres aleatorios en lugar de xyz.com o 123.45.67.89.
[email protected]:~$ ssh-keyscan -t rsa -H bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
La primera línea de comentario aparece de manera exasperante, pero puedes deshacerte de ella con una simple redirección a través de la convención ">" o ">>".
Como hice todo lo posible para obtener datos no contaminados que se usarán para identificar un "host" y confiar, agregaré esta identificación a mi archivo unknown_hosts en mi directorio ~/.ssh. Dado que ahora se identificará como un host conocido, no recibiré el aviso mencionado anteriormente cuando eras joven.
Gracias por seguir conmigo, aquí tienes. Estoy agregando la clave RSA de bitbucket para poder interactuar con mis repositorios git allí de una manera no interactiva como parte de un flujo de trabajo de CI, pero haga lo que quiera.
#!/bin/bash
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.old && echo "|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==" >> ~/.ssh/known_hosts
Entonces, así es como te mantienes virgen por hoy. Puedes hacer lo mismo con github siguiendo instrucciones similares en tu propio tiempo.
Vi tantas publicaciones de desbordamiento de pila que le decían que agregue la clave mediante programación a ciegas sin ningún tipo de verificación. Cuanto más verifique la clave de diferentes máquinas en diferentes redes, más confianza tendrá en que el host es el que dice ser, y eso es lo mejor que puede esperar de esta capa de seguridad.
INCORRECTOssh -oStrictHostKeyChecking=sin nombre de host [comando]
INCORRECTOssh-keyscan -t rsa -H nombre de host>> ~/.ssh/hosts_conocidos
No hagas ninguna de las cosas anteriores, por favor. Tiene la oportunidad de aumentar sus posibilidades de evitar que alguien espíe sus transferencias de datos a través de un ataque de hombre en el medio:aproveche esa oportunidad. La diferencia es, literalmente, verificar que la clave RSA que tiene es la del servidor de buena fe y ahora sabe cómo obtener esa información para compararlos y confiar en la conexión. Solo recuerde que más comparaciones de diferentes computadoras y redes generalmente aumentarán su capacidad de confiar en la conexión.