Почему git не использует идентификационные данные в конфигурационном файле ssh?
Я пытаюсь подключиться к своему локальному серверу Gitea. Я настроил его на использование встроенного SSH-сервера на порту 2222. Я работаю под управлением Windows. Гита работает нормально.
Теперь я хочу подключиться, используя Cygwin's git. Для тестирования соединения с моим репозиторием я использую команду ls-remote, которая отлично работает, если я использую GIT_SSH_COMMAND
вариант как этот:
GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa" git ls-remote --exit-code -h ssh://username@localhost:2222/username/Repo.git
Далее я хочу упростить жизнь, используя ~/.ssh/config
:
host gitea
HostName localhost
Port 2222
IdentityFile ~/.ssh/id_rsa
User username
Тем не менее, это не с ошибкой Unable to open connection
:
git ls-remote --exit-code -h ssh://gitea/username/Repo.git
Проблема: IdentityFile
не применяется Это работает:
GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa" git ls-remote --exit-code -h ssh://gitea/username/Repo.git
Я уверен, однако, что мой ~/.ssh/config
правильно, потому что подключение через напрямую ssh -vv gitea
работает. Вывод (извлечение):
[...]
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).
[...]
Так почему же git
не используется IdentityFile
от ~/.ssh/config
?
1 ответ
Оказалось, что установка GIT_SSH_COMMAND="ssh"
было достаточно. Это означает, что git
использовал какой-то другой клиент SSH. Вероятно, тот из OpenSSH, который оказался на системном пути:
$ whereis ssh
ssh: /usr/bin/ssh.exe /cygdrive/c/WINDOWS/System32/OpenSSH/ssh.exe /usr/share/man/man1/ssh.1.gz
Я исправил проблему, добавив export GIT_SSH_COMMAND="/usr/bin/ssh"
в ~/.bash_profile