El argumento “-i” pasado a GIT_SSH_COMMAND se ignora

3 minutos de lectura

Quiero usar otro IdentityFile para git. Quiero usarlo dinámicamente, no a través de la configuración. Estoy haciendo esto:

  $ GIT_SSH_COMMAND='ssh -i /home/my_user/.ssh/id_ed25519' git pull origin master
  repository access denied.
  fatal: Could not read from remote repository.

  Please make sure you have the correct access rights
  and the repository exists.

La clave de pub “id_ed25519.pub” está en mi bitbucket.

Y esto también falla:

  $ git pull origin master
  repository access denied.
  fatal: Could not read from remote repository.

  Please make sure you have the correct access rights
  and the repository exists.

Y:

$ git remote -v
origin  git@bitbucket.org:company123/repo456.git (fetch)
origin  git@bitbucket.org:company123/repo456.git (push)

agregando “-v” a ‘ssh -i /home/mi_usuario/.ssh/id_ed25519’ revela que se está utilizando mi clave RSA, en lugar de ED. ¿Por qué?

Avatar de usuario de AlexTG
AlexTG

Tuve el mismo problema con la versión reciente de Ubuntu:

El uso de -vvv reveló lo siguiente:

debug2: key: /home/ubuntu/.ssh/id_rsa (0x5628e48246d0), agent
debug2: key: /home/ubuntu/code/id_rsa (0x5628e4820af0), explicit

agregando -o IdentitiesOnly=yes resuelto. Le dice a SSH que ignore las identidades de ssh-agent (por ejemplo, agregadas con ssh-add) que, de lo contrario, prevalecerán.

Lleno git dominio:

GIT_SSH_COMMAND='ssh -o IdentitiesOnly=yes -i /home/ubuntu/code/id_rsa -F /dev/null' git pull

  • Agregué una oración que describe brevemente lo que IdentitiesOnly hace. Siéntase libre de editar/revertir en caso de que no esté de acuerdo con el cambio.

    – luator

    8 de septiembre de 2022 a las 9:01

Verifique sus comandos (se llama git directamente o mediante un alias) y la configuración:
Como menciono en “Uso GIT_SSH_COMMAND“, un git config -l podría revelar otra configuración que anularía la variable de entorno.

Consulta la devolución de git config core.sshCommand.

Finalmente, GIT_SSH_COMMAND significa Git 2.10+, por lo que si su versión de Git es demasiado antigua, primero deberá actualizarla.

  • “git demasiado viejo” era mi problema.

    – semental

    8 de febrero de 2021 a las 23:18

  • git –version muestra “git versión 2.33.0” todavía tiene este problema.

    – Truong Hieu

    13 abr a las 16:11

  • @TruongHieu ¿Git 2.40 también lo tendría?

    – VoC

    13 abr a las 17:17

En caso de que alguien tenga este problema con la ligera variación de configuración GIT_SSH_COMMAND en una línea, y luego en una línea diferente realmente ejecutando el git comando, intente uno de los siguientes:

  1. colocar GIT_SSH_COMMAND en la misma línea:
$ GIT_SSH_COMMAND="ssh -i ${key_location}" git clone [...]

o….

  1. exportar GIT_SSH_COMMAND
$ export GIT_SSH_COMMAND="ssh -i ${key_location}"
$ git clone [...]

yo habré puesto GIT_SSH_COMMAND justo después de encontrar qué tecla usar y luego ejecutar git unas líneas después. Quité por error el export y rompió el git dominio.


Dado que este es uno de los principales enlaces de Google cuando se busca “GIT_SSH_COMMAND” y la pregunta recibe más votos que las respuestas, es posible que algunos visitantes tengan el mismo problema que OP pero por una razón diferente a la que recomiendan las otras respuestas. Esperemos que esto sea útil para alguien.

¿Ha sido útil esta solución?