LibGit2Sharp SSH, Невозможно обменяться ключами шифрования
Попытка собрать пример проекта, клонирующего репозиторий (размещенный в 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, toritise git, gitkraken). Также мы можем подключиться через https с именем пользователя и паролем с помощью LibGit2Sharp.
Вещи, которые я пробовал до сих пор:
- Генерация новых ключей с помощью ssh-keygen
- Преобразование файла закрытого ключа в openssh с помощью puttygen > Conversions > Export OpenSSH
- Преобразование закрытого ключа в формат PEM с использованием "openssl rsa -in key-out key.pem"
- Убедитесь, что открытый ключ состоит из одной строки, начиная с типа, за которым следует ключ base64, без комментариев в конце