Доступ к удаленному репозиторию 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, должна быть настроена на уровне ОС.