Estoy tratando de hacer una git clone
secuencia de comandos bash, pero la primera vez que ejecuto la secuencia de comandos y el servidor aún no se conoce, la secuencia de comandos falla. Tengo algo como esto:
yes | git clone git@github.com:repo/repoo.git
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)?
Pero está ignorando el yes
. ¿Sabes cómo forzar git clone
a agregar la clave a los hosts conocidos?
echo yes | git clone [email protected]:repo/repoo.git
?echo yes
no es un buen enfoque: la segunda vez que ejecuta el comando, ssh no le preguntará si desea continuar porque ya se conocerá la clave del servidor.Respuestas:
Agregue lo siguiente a su
~/.ssh/config
archivo:Cualquier cosa que use el cliente open-ssh para establecer un shell remoto (con el cliente git lo hace) debe omitir las comprobaciones de teclas en github.com.
En realidad, esta es una mala idea, ya que cualquier forma de omitir los cheques (ya sea que presione automáticamente sí o omita el cheque en primer lugar) crea espacio para un hombre en el compromiso de seguridad medio. Una mejor manera sería recuperar y validar la huella digital y almacenarla en el
known_hosts
archivo antes de tener que ejecutar algún script que se conecte automáticamente.fuente
known_hosts
archivo anterior .yes
salidasy
. Necesidades de aceptación clave de RSAyes
. Podrías probaryes yes | git clone [email protected]:repo/repoo.git
conyes
salidas enyes
lugar dey
.fuente
echo "yes" | ...
hace. Creogit
que no acepta tuberías. ¿Quizás solo en alguna versión?La ejecución
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
antes de la clonación agregará la clave y evitará que aparezca la solicitud.Por supuesto, este enfoque también es vulnerable a un ataque MITM.
fuente
Me he encontrado con este problema antes. Aunque estaba en una máquina Windows pero necesitábamos usar ssh para conectarnos a un host remoto. Nos encontramos con el mismo problema que la primera conexión siempre fallaba porque no reconocería las claves.
Lo resolví conectándome manualmente y encontrando la clave de registro e importándola al comienzo del script. En Linux, debe ser la misma idea general: desea agregar este servidor a una lista de hosts confiables para que ssh no le pregunte si confía en él cada vez.
Una vez que se conecte manualmente, busque el archivo de clave y agréguelo a su archivo conocido_hosts. De esta manera, ssh revisará ese archivo, asumirá que sabe lo que está haciendo y procederá sin preguntarle sobre la huella digital.
fuente