LibGit2 SSH 认证失败
LibGit2 SSH Authenication Failing
我正在尝试使用带有 LibGit2 的 SSH 克隆存储库,使用以下代码:
#include <string>
#include <iostream>
#include "main.h"
#include "git2.h"
using namespace std;
int creds(git_cred **out, const char *url, const char *username_from_url,
unsigned int allowed_types, void *payload) {
cout << "Calling creds" << endl;
return git_credential_ssh_key_new(out, username_from_url,
"path_to_home/.ssh/id_rsa.pub", "path_to_home/.ssh/id_rsa", "password");
}
int main() {
git_libgit2_init();
string url = "git@github.com:Black-Photon/Git-Testing.git";
git_repository *repo = nullptr;
git_clone_options ops = GIT_CLONE_OPTIONS_INIT;
ops.fetch_opts.callbacks.credentials = creds;
int err = git_clone(&repo, url.c_str(), "path_to_home/Documents/temp/Git-Testing", &ops);
cout << giterr_last()->message << endl;
git_libgit2_shutdown();
}
但是我得到的输出是:
Calling creds
Calling creds
Calling creds
...
表明它不接受 SSH 密钥和密码。但是,当我在普通 Git:
中使用相同的密钥和密码时
git clone git@github.com:Black-Photon/Git-Testing.git
Cloning into 'Git-Testing'...
Enter passphrase for key 'path_to_home/.ssh/id_rsa': password
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 29 (delta 0), reused 13 (delta 0), pack-reused 6
Receiving objects: 100% (29/29), 4.58 KiB | 426.00 KiB/s, done.
工作正常。为什么使用 LibGit2 失败?
我正在使用 LibGit2 版本 0.99.0。我已经尝试在 id_rsa
中保留和删除空的最后一行,之前在 LibGit2 版本 0.26.0 上给出了不同的消息:Failed to authenticate SSH session: Callback returned error
。我也尝试使用
git_credential_ssh_key_memory_new
得到相同的结果。
正在使用的 SSH 库 1.8.0 已过时,必须更新到 1.9.0。
我正在尝试使用带有 LibGit2 的 SSH 克隆存储库,使用以下代码:
#include <string>
#include <iostream>
#include "main.h"
#include "git2.h"
using namespace std;
int creds(git_cred **out, const char *url, const char *username_from_url,
unsigned int allowed_types, void *payload) {
cout << "Calling creds" << endl;
return git_credential_ssh_key_new(out, username_from_url,
"path_to_home/.ssh/id_rsa.pub", "path_to_home/.ssh/id_rsa", "password");
}
int main() {
git_libgit2_init();
string url = "git@github.com:Black-Photon/Git-Testing.git";
git_repository *repo = nullptr;
git_clone_options ops = GIT_CLONE_OPTIONS_INIT;
ops.fetch_opts.callbacks.credentials = creds;
int err = git_clone(&repo, url.c_str(), "path_to_home/Documents/temp/Git-Testing", &ops);
cout << giterr_last()->message << endl;
git_libgit2_shutdown();
}
但是我得到的输出是:
Calling creds
Calling creds
Calling creds
...
表明它不接受 SSH 密钥和密码。但是,当我在普通 Git:
中使用相同的密钥和密码时git clone git@github.com:Black-Photon/Git-Testing.git
Cloning into 'Git-Testing'...
Enter passphrase for key 'path_to_home/.ssh/id_rsa': password
remote: Enumerating objects: 23, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 29 (delta 0), reused 13 (delta 0), pack-reused 6
Receiving objects: 100% (29/29), 4.58 KiB | 426.00 KiB/s, done.
工作正常。为什么使用 LibGit2 失败?
我正在使用 LibGit2 版本 0.99.0。我已经尝试在 id_rsa
中保留和删除空的最后一行,之前在 LibGit2 版本 0.26.0 上给出了不同的消息:Failed to authenticate SSH session: Callback returned error
。我也尝试使用
git_credential_ssh_key_memory_new
得到相同的结果。
正在使用的 SSH 库 1.8.0 已过时,必须更新到 1.9.0。