![Почему git не использует идентификатор, установленный в файле конфигурации ssh?](https://rvso.com/image/726408/%D0%9F%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20git%20%D0%BD%D0%B5%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D1%82%20%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%2C%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%20%D0%B2%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B5%20%D0%BA%D0%BE%D0%BD%D1%84%D0%B8%D0%B3%D1%83%D1%80%D0%B0%D1%86%D0%B8%D0%B8%20ssh%3F%20.png)
Я пытаюсь подключиться к своему локальномуГитеасервер. Я настроил его на использование интегрированного сервера SSH на порту 2222. Я работаю под управлением Windows. Gitea работает нормально.
Теперь я хочу подключиться с помощьюМерзость Cygwin. Для проверки подключения к моему репозиторию я используюls-удалённыйкоманда, которая отлично работает, если я использую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
from ~/.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