LibGit2Sharp SSH, невозможно обменяться ключами шифрования - PullRequest
0 голосов
/ 25 октября 2018

Пытается собрать пример проекта, клонирующего репозиторий (размещенный в GOGS ) с использованием SSH, и получаю следующую ошибку:

Failed to start SSH session: Unable to exchange encryption keys

Я нахожусь на окнах, ключисоздаются с помощью ssh-keygen, и у меня есть следующие пакеты nuget, на которые есть ссылки

  • LibGit2Sharp 0.25.3
  • LibGit2Sharp.NativeBinaries 1.0.235
  • LibGit2Sharp-SSH 1.0.22
  • LibGit2Sharp-SSH.NativeBinaries 1.0.14

Мы можем извлекать файлы из тестовой битовой учетной записи, но не из URL-адреса хранилища GOGS, используя такой код, какследующее (одни и те же ключи были загружены в обе учетные записи).

var co = new CloneOptions
{
        CredentialsProvider = (_url, _user, _cred) => new SshUserKeyCredentials()
        {
                PrivateKey = @"C:\Users\username\.ssh\keygen\gen",
                PublicKey = @"C:\Users\username\.ssh\keygen\gen.pub",
                Passphrase = string.Empty,
                Username = "git"

        },
};
Repository.Clone("ssh://git@<site_url>:443/Project/Project.git ", TestPath, co);

Я бы также добавил, что мы можем клонировать из обоих URL-адресов, используя различные клиенты git (git exe, tortoise git, gitkraken)без проблем.Также мы можем подключиться через https с именем пользователя и паролем с помощью LibGit2Sharp.

То, что я пробовал до сих пор:

  1. Создание новых ключей с помощью ssh-keygen
  2. Конвертацияфайл закрытого ключа для openssh с помощью puttygen> Преобразования> Экспорт OpenSSH
  3. Преобразование закрытого ключа в формат PEM с использованием "openssl rsa -in key-out key.pem"
  4. Убедитесь, что Publicключом была одна строка, начинающаяся с типа, за которой следовал ключ base64, без комментариев в конце
...