Как мне установить учетные данные ssh для libgit2/libssh2?

Я пытаюсь выдвинуть ссылки изнутри pygit2/libgit2:

    push_refspec = git_repo.lookup_reference('HEAD').resolve().name
    logger.info("Pushing " + push_refspec)
    git_remote.push(push_refspec)

Тем не менее я получаю ошибку об отсутствующих учетных данных:

    _pygit2.GitError: Cannot set up SSH connection without credentials

Это в конечном итоге исходит от libssh2 через звонок от libgit2 (transports/ssh.c):

if (user && pass) {
    if (git_cred_userpass_plaintext_new(&t->cred, user, pass) < 0)
        goto on_error;
} else if (t->owner->cred_acquire_cb) {
    if (t->owner->cred_acquire_cb(
            &t->cred, t->owner->url, user,
            GIT_CREDTYPE_USERPASS_PLAINTEXT |
            GIT_CREDTYPE_SSH_KEY |
            GIT_CREDTYPE_SSH_CUSTOM,
            t->owner->cred_acquire_payload) < 0)
        goto on_error;

    if (!t->cred) {
        giterr_set(GITERR_SSH, "Callback failed to initialize SSH credentials");
        goto on_error;
    }
} else {
    giterr_set(GITERR_SSH, "Cannot set up SSH connection without credentials");
    goto on_error;
}

push из репозитория с помощью клиента Git работает просто отлично. Я старался GIT_SSL_NO_VERIFY=true что (неудивительно) не сработало.

Какую дополнительную информацию мне нужно установить, чтобы заставить это работать?

1 ответ

Решение

Похоже, что pygit2 пока не поддерживает сетевые операции libgit2. Происходит некоторое обсуждение API, но ничего не доработано.

РЕДАКТИРОВАТЬ: Похоже, это было реализовано, так как этот ответ был принят. В документации есть некоторые примечания по этому вопросу.

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