Estoy tratando de ejecutar git clone
sin que ssh verifique la clave del host del repositorio. Puedo hacerlo desde ssh así:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no user@host
¿Hay alguna forma de pasar las mismas opciones ssh al comando git clone?
Editar: hay una restricción que no puedo modificar ~/.ssh/config
ni ningún otro archivo en esa máquina.
Respuestas:
Agréguelos a su
~/.ssh/config
:La
Host
entrada es lo que especificará en la línea de comando yHostName
es el verdadero nombre de host. Pueden ser iguales o laHost
entrada puede ser un alias. LaUser
entrada se utiliza si no la especificauser@
en la línea de comando.Si debe configurar esto en la línea de comando, configure la
GIT_SSH
variable de entorno para que apunte a un script con sus opciones en él.fuente
GIT_SSH
variable de entorno.El git 2.3 lanzado recientemente admite una nueva variable "GIT_SSH_COMMAND" que se puede usar para definir un comando CON parámetros.
fuente
git clone
o el código es correcto?Otra opción hecha para especificar diferentes claves es
git config core.sshCommand
con git 2.10 + (Q3 2016).Esta es una alternativa a la variable de entorno descrita en la respuesta de Boris )
Véase la confirmación 3c8ede3 (26 de junio de 2016) de Nguyễn Thái Ngọc Duy (
pclouds
) .(Combinado por Junio C Hamano -
gitster
- en el compromiso dc21164 , 19 de julio de 2016)Significa que
git clone
puede ser:Si desea aplicar eso para todos los repositorios , como agrega el usuario 1300959 en los comentarios , usaría una configuración global.
fuente
git clone
; en este caso, es posible que desee configurar el comando git ssh de forma global:git config --global core.sshCommand ...
Aquí hay un ejemplo complicado de cómo pasar los argumentos ssh utilizando la variable GIT_SSH:
Nota: Las líneas anteriores son líneas de comandos de terminal que debe pegar en su terminal. Creará un archivo ssh , lo hará ejecutable y lo ejecutará.
Si desea pasar la opción de clave privada, consulte ¿Cómo decirle a git qué clave privada usar? .
fuente
$*
y"$@"
parecen funcionar. Normalmente lo uso"$@"
, ya que el otro parece obsoleto. ¿Hay alguna razón para preferir$*
en este caso?Configuración del nivel de repositorio sin afectar la configuración del nivel del sistema
Consolidando las respuestas ya disponibles, elijo los pasos a continuación. Esto asegura que los cambios de configuración no impacten a nivel de máquina, sino solo para el repositorio en el que se está trabajando. Esto es necesario en mi caso, ya que mi script debe ejecutarse en un agente Bamboo compartido.
1.Clone el repositorio adoptando el
GIT_SSH_COMMAND
enfoque.2.Una vez clonado, navegue al directorio del repositorio.
3.Establezca la
core.sshCommand
configuración para que todas las llamadas futuras se puedan ejecutar con los comandos git como de costumbre, pero consumiendo internamente las opciones de git proporcionadas.fuente
core.sshCommand
que mencioné anteriormente. Voto a favor.Creo que actualizar git a una versión> = 2.3 y usar
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no" git clone user@host
es la opción de apuesta, pero si no es posible, @ josh-lee dio una buena opción, pero por favor, actualice su respuesta sangrando el archivo de configuración ssh.fuente
Este problema se ha solucionado siguiendo los pasos en la máquina de Windows: -
Cree un archivo de configuración en la carpeta C: \ Users \ username.ssh.
agregue la siguiente línea a un archivo de configuración.
vuelva a intentarlo.
fuente