Доступ к удаленному репозиторию git через ssh, используя libgit2sharp

Я пытаюсь получить простой рабочий пример для клонирования или доступа к удаленному репозиторию git через ssh. После добавления пакета Nuget LibGit2Sharp-SSH v1.0.22получил консольное приложение.Net Framework v4.6.1, например:

using LibGit2Sharp;
using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        string localPath = Path.Combine(Path.GetTempPath(), "Example");
        string repoPath = "git@example.server.com:Projects/Project1.git";
        Repository.Clone(repoPath, localPath, new CloneOptions() { CredentialsProvider = CredentialsHandler });
    }

    private static Credentials CredentialsHandler(string url, string username, SupportedCredentialTypes types)
    {
        var sshDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".ssh");
        return new SshUserKeyCredentials()
        {
            Username = username,
            Passphrase = string.Empty,
            PublicKey = Path.Combine(sshDir, "id_rsa.pub"),
            PrivateKey = Path.Combine(sshDir, "id_rsa")
        };
    }
}

Это возвращает 'Failed to start SSH session: Unable to exchange encryption keys',

Если я использую вместо

repoPath = "ssh://git@example.server.com:Projects/Project1.git";

Потом кидает Malformed URL 'ssh://git@example.server.com:Projects/Project1.git',

1 ответ

Попробуйте использовать "/" вместо второго ":", чтобы исправить "неправильный URL"

repoPath = "ssh://git@example.server.com/Projects/Project1.git";

Что касается "Не удалось запустить сессию SSH", это проблема с libgit, а не с LibGit2Sharp, должна быть настроена на уровне ОС.

Другие вопросы по тегам