![Warum verwendet Git nicht die in der SSH-Konfigurationsdatei festgelegte Identität?](https://rvso.com/image/726408/Warum%20verwendet%20Git%20nicht%20die%20in%20der%20SSH-Konfigurationsdatei%20festgelegte%20Identit%C3%A4t%3F%20.png)
Ich versuche, eine Verbindung zu meinem lokalenGiteaServer. Ich habe es so eingerichtet, dass der integrierte SSH-Server auf Port 2222 verwendet wird. Ich verwende Windows. Gitea läuft einwandfrei.
Jetzt möchte ich eine Verbindung herstellen mitCygwins Trottel. Zum Testen der Verbindung zu meinem Repository verwende ich denls-FernbedienungBefehl, der gut funktioniert, wenn ich denGIT_SSH_COMMAND
Option wie diese:
GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa" git ls-remote --exit-code -h ssh://username@localhost:2222/username/Repo.git
Als nächstes möchte ich das Leben vereinfachen, indem ich ~/.ssh/config
:
host gitea
HostName localhost
Port 2222
IdentityFile ~/.ssh/id_rsa
User username
Dies schlägt jedoch mit dem folgenden Fehler fehl Unable to open connection
:
git ls-remote --exit-code -h ssh://gitea/username/Repo.git
Problem: IdentityFile
wird nicht angewendet. So funktioniert es:
GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa" git ls-remote --exit-code -h ssh://gitea/username/Repo.git
Ich bin mir jedoch sicher, dass meine ~/.ssh/config
richtig ist, da die direkte Verbindung über ssh -vv gitea
funktioniert. Ausgabe (Auszug):
[...]
debug1: Connecting to localhost [::1] port 2222.
debug1: Connection established.
[...]
debug1: Offering public key: RSA SHA256:XXX /home/username/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 535
debug2: input_userauth_pk_ok: fp SHA256:XXX
debug1: Authentication succeeded (publickey).
Authenticated to localhost ([::1]:2222).
[...]
Warum wird also nicht „from git
“ verwendet ?IdentityFile
~/.ssh/config
Antwort1
Es stellte sich heraus, dass diese Einstellung GIT_SSH_COMMAND="ssh"
ausreichte. Das bedeutet, dass git
ein anderer SSH-Client verwendet wurde. Wahrscheinlich der von OpenSSH, der sich zufällig im Systempfad befand:
$ whereis ssh
ssh: /usr/bin/ssh.exe /cygdrive/c/WINDOWS/System32/OpenSSH/ssh.exe /usr/share/man/man1/ssh.1.gz
Ich habe das Problem behoben, indem export GIT_SSH_COMMAND="/usr/bin/ssh"
ich~/.bash_profile