Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Which format should be SSH private key for LibGit2 LibGit2Sharp (+SSH)

Tags:

I´m kind of stuck with an SSH private key issue and LibGit2Sharp-Ssh.

I have a .Net/C# application that uses LibGit2Sharp-Ssh to clone a Git repository.

I need to use SSH (https with user/password is not an option) and I also have a valid key, which is already working e.g. with Teamcity.

My code looks like this:

CloneOptions options = new CloneOptions
{
     Checkout = false,
     CredentialsProvider = (url, user, cred) => new SshUserKeyCredentials()
     {
          PrivateKey = privateKey,
          Passphrase = passphrase,
          PublicKey = publicKey,
          Username = "git"
     }
};
var clone = LibGit2Sharp.Repository.Clone(remoteUrl, localPath, options);

privateKey points to a private key file in "OpenSSH" format.

When Clone is executed i get:

LibGit2Sharp.LibGit2SharpException: "Failed to authenticate SSH session: Invalid key data, not base64 encoded"

I've tried all of the private key formats I could create with PuttyGen, but I always get the same result.

What might be the issue or in what format do I need to create the private key file?

My OpenSSH-format key looks like (truncated):

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,27A4E70608469318

<Key-Data, like "sdhsdcQEHBg3uzfb...">
-----END RSA PRIVATE KEY-----
like image 490
emvoll Avatar asked Nov 23 '17 21:11

emvoll


1 Answers

privateKey point to a private key file in "OpenSSH" format.

privateKey needs to point to a key, not a path to a key. You need to read the key file and place the contents into a string that you can pass to privateKey.

like image 143
Edward Thomson Avatar answered Sep 23 '22 12:09

Edward Thomson