Git: git@gitlab.com: доступ запрещен (публичный ключ), когда я нажимаю кнопку «синхронизировать изменения» - PullRequest
2 голосов
/ 04 апреля 2020

Я использую windows и cmder, и для терминала по умолчанию задано значение bash для cmder (я полагаю, что любая версия git -for- windows поставляется с cmder).
У меня также есть файл ключа ~ / .ssh / id_ed25519 s sh, защищенный паролем.

Вот мой файл ~ / .ssh / config, хотя я уже попробовал почти все возможные настройки для этого файла.

Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519`

Я также пытался

Host *
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_ed25519`

Я работаю над этим очень долго, и, похоже, на самом деле нет никакой хорошей информации об этой топике c. Независимо от того, как я это настроил, всегда отображается «Git: git@gitlab.com: Permission Denied (publickey)», когда я нажимаю кнопку синхронизации изменений в левом нижнем углу.

Я перепробовал все, что нашел на множестве форумов, включая проверку того, что "remote.SSH.showLoginTerminal": установлено значение "true", и выполнение почти всех возможных настроек ~/.ssh/config.

Когда я запускаю «git pull» или «git push» из терминала, он запрашивает у меня пароль к моему ключевому файлу, и я набираю пароль, и он работает нормально.
По какой-то причине всякий раз, когда Я нажимаю кнопку «Синхронизировать изменения». Я получаю ту же ошибку «Git: git@gitlab.com: Permission Denied (publickey).»

Кроме того, у меня уже запущен агент «s sh» и мой ключевой файл добавлен в агент s sh как личность. Поэтому, когда я набираю «ssh-add -l», он дает мне правильную информацию о ключевом файле.

Итак, суммируем ключевые факты:

  1. Когда я запускаю git pull / push / ..., он запрашивает мой пароль и отлично работает
  2. Когда я нажимаю «Синхронизировать изменения», появляется сообщение об ошибке Git: git@gitlab.com: Permission Denied (publickey)

1 Ответ

1 голос
/ 04 апреля 2020

Сначала проверьте удаленный URL-адрес, используемый VSCode при извлечении или pu sh:
Ctrl + Shift + P : Git : show Git output

Дважды проверьте удаленный URL-адрес, используемый вашим локальным хранилищем

cd /path/to/repo
git remote -v

Я бы использовал как URL

git remote set-url origin gitlab.com:<me>/<myrepo>

Нет необходимости в git @ поскольку ваш ~/.ssh/config должен предоставить его вам.
На самом деле, я бы изменил в этом файле ~/.ssh/config запись Host с gitlab.com на gitlab и:

git remote set-url origin gitlab:<me>/<myrepo>

Таким образом , вы обязательно используете файл конфигурации S SH.

Я бы также проверил аутентификацию с помощью

ssh -T gitlab
ssh -Tvvv gitlab

(используйте вторую форму, только если первая не удалась)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...