Das an GIT_SSH_COMMAND übergebene Argument „-i“ wird ignoriert

Lesezeit: 3 Minuten

Ich möchte eine andere IdentityFile für Git verwenden. Ich möchte es dynamisch verwenden, nicht über die Konfiguration. Ich mache das:

  $ 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.

Der Pub-Schlüssel „id_ed25519.pub“ befindet sich in meinem Bitbucket.

Und auch das scheitert:

  $ 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.

Und:

$ git remote -v
origin  [email protected]:company123/repo456.git (fetch)
origin  [email protected]:company123/repo456.git (push)

Hinzufügen „-v“ Zu ‘ssh -i /home/my_user/.ssh/id_ed25519’ zeigt, dass mein RSA-Schlüssel anstelle von ED verwendet wird. Warum?

Benutzeravatar von AlexTG
AlexTG

Ich hatte das gleiche Problem mit der aktuellen Ubuntu-Version:

Die Verwendung von -vvv ergab Folgendes:

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

Hinzufügen -o IdentitiesOnly=yes Ich habe es gelöst. Es weist SSH an, Identitäten vom SSH-Agenten (z. B. hinzugefügt mit) zu ignorieren ssh-add), die ansonsten Vorrang haben.

Voll git Befehl:

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

  • Ich habe einen Satz hinzugefügt, der kurz beschreibt, was IdentitiesOnly tut. Sie können die Änderung jederzeit bearbeiten/zurücksetzen, falls Sie mit der Änderung nicht einverstanden sind.

    – Luator

    8. September 2022 um 9:01 Uhr

Überprüfen Sie Ihre Befehle (wird Git direkt oder über einen Alias ​​aufgerufen) und Ihre Konfiguration:
Wie ich in „Verwenden“ erwähne GIT_SSH_COMMAND“, könnte ein git config -l eine andere Konfiguration aufdecken, die die Umgebungsvariable überschreiben würde.

Überprüfen Sie die Rückgabe von git config core.sshCommand.

Endlich, GIT_SSH_COMMAND bedeutet Git 2.10+. Wenn Ihre Git-Version also zu alt ist, müssen Sie sie zuerst aktualisieren.

  • „Idiot zu alt“ war mein Problem.

    – Stud

    8. Februar 2021 um 23:18 Uhr

  • git –version show up „git version 2.33.0“ hat immer noch dieses Problem.

    – Truong Hieu

    13. April um 16:11 Uhr

  • @TruongHieu Hätte Git 2.40 es auch?

    – VonC

    13. April um 17:17 Uhr

Falls jemand dieses Problem mit der geringfügigen Änderung der Einstellung hat GIT_SSH_COMMAND in einer Zeile und dann auf einer anderen Linie tatsächlich läuft das git Befehl, versuchen Sie bitte einen der folgenden Schritte:

  1. Satz GIT_SSH_COMMAND in der gleichen Zeile:
$ GIT_SSH_COMMAND="ssh -i ${key_location}" git clone [...]

oder….

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

Ich habe eingestellt GIT_SSH_COMMAND direkt nachdem Sie herausgefunden haben, welcher Schlüssel verwendet werden soll, und dann ausgeführt werden git ein paar Zeilen später. Ich habe das versehentlich entfernt export und es hat das kaputt gemacht git Befehl.


Da dies einer der Top-Google-Links bei der Suche nach „GIT_SSH_COMMAND“ ist und die Frage häufiger positiv bewertet wird als die Antworten, kann es sein, dass einige Besucher das gleiche Problem wie OP haben, jedoch aus einem anderen Grund als in den anderen Antworten empfohlen. Hoffentlich ist das für jemanden hilfreich.

1450430cookie-checkDas an GIT_SSH_COMMAND übergebene Argument „-i“ wird ignoriert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy