libgit2 / libgit2/pygit2

invalid credential type for any passed RemoteCallback

Open
#1,278 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
1.7k
Forks
408
Avg merge
2d 57m
Merged PRs (30d)
7

Description

pygit2 version: 1.14.1
Python version: 3.10.12

I'm trying to connect to the git server with via a ssh url.
e.g. remote.url is ssh://example.com:22/path/to/repo

When I'm trying to remote.fetch(callbacks=callbacks) (or any other operation like push or connect) I'm getting TypeError: invalid credential type

It doesn't matter which credential provider I pass into the RemoteCallbacks object.
For example:

keypair = pygit2.Keypair("git", "/home/myuser/.ssh/id_rsa.pub", "/home/myuser/.ssh/id_rsa", "")
callbacks = pygit2.RemoteCallbacks(keypair)

or

keypair = pygit2.UserPass("eeee", "xxx")
callbacks = pygit2.RemoteCallbacks(keypair)

or

keypair = pygit2.KeypairFromAgent("git")
callbacks = pygit2.RemoteCallbacks(keypair)

I'm getting always the following stack trace:

  File "..../site-packages/pygit2/remotes.py", line 120, in connect
    payload.check_error(err)
  File "..../site-packages/pygit2/callbacks.py", line 93, in check_error
    raise self._stored_exception
  File "..../site-packages/pygit2/callbacks.py", line 416, in wrapper
    return f(*args)
  File "..../site-packages/pygit2/callbacks.py", line 484, in _credentials_cb
    ccred = get_credentials(credentials, url, username, allowed)
  File "..../site-packages/pygit2/callbacks.py", line 579, in get_credentials
    raise TypeError("invalid credential type")

The repository is initialized with repo = Repository(discover_repository("/root/path/of/my/repo"))
With git itself I can do all the operations. So I guess that the settings are correct.

Do you have any idea which does let this operation fail?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the failing entry points in pygit2/remotes.py and callbacks.py, especially RemoteCallbacks, _credentials_cb, and get_credentials; reproduce the error with the shown Keypair, UserPass, and KeypairFromAgent examples. Trace how credentials are passed during connect or fetch, and consider the issue done when valid credential providers no longer raise TypeError: invalid credential type.

Written by the indexing model from the issue text.

Assessment

Tech stack
git, python
Domain
devtools
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.