2016-12-28 4 views
4

Ayant quelques problèmes d'authentification avec SshUserKeyCredentials en utilisant libgit2sharp-SSH:vous authentifier auprès SshUserKeyCredentials dans libgit2sharp-SSH

var co = new CloneOptions(); 
co.CredentialsProvider = (_url, _user, _cred) => new SshUserKeyCredentials { PrivateKey="C:\\path\\to\\private_key" }; 
Repository.Clone("[email protected] .repository.git", path, co); 

J'ai trouvé le SshUserKeyCredentials objet navigation sur le code source pour ma première question serait s'il est possible de utiliser cet objet pour déployer la vérification basée sur les clés de gitlab?

L'objet semble vouloir une combinaison de PrivateKey, Username, PublicKey et Passphrase. J'utilise actuellement un PrivateKey.

L'erreur que je finis avec:

{"Failed to start SSH session: Unable to exchange encryption keys"} 

Si cette façon n'est pas censé fonctionner est-il une autre façon d'utiliser le déploiement des clés pour gérer un programme git de C# environnement?

Répondre

1

J'ai été capable de comprendre ce qui suit par essais et erreurs et de récurer la bande.

  1. Vous ne pouvez pas avoir null pour n'importe quel champ; utilisez string.Empty. clé privée

  2. public et doit être fourni et dans le format approprié. La clé privée devait être au format PEM (utilisez soit le menu de conversion PuttyGen => Export OpenSSH, soit openssl rsa -in id_rsa -out id_rsa.pem). La clé publique devait être une seule ligne, en commençant par le type, suivie par la touche base64, aucun commentaire à la fin (c'est le format affiché dans la zone de texte de la clé publique sur PuttyGen, sauf que vous devez supprimer le commentaire) , par exemple

    ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAoblahblahblahblahblah

j'ai ajouté le nom d'utilisateur git parce que ce Bitbucket exige. Pas sûr que vous avez besoin de cela, mais il ne peut pas être null, faire string.Empty.

Exemple:

CredentialsHandler handler = (_url, _user, _cred) => new SshUserKeyCredentials 
        { 
         PrivateKey = @"C:\Users\blah\.ssh\keys\bitbucket.pem", 
         Username = "git", 
         Passphrase = string.Empty, 
         PublicKey = @"C:\Users\blah\.ssh\keys\bitbucket.pub" 
        } 

Voir aussi: PHP ssh2_auth_pubkey_file(): Authentication failed using public key: Invalid key data, not base64 encoded