Git 使用 GitPython + SSH 密钥进行拉取无效

Git pull using GitPython + SSH keys doesn't work

我正在尝试使用 GitPython 从我的 Github 帐户中提取一个存储库。这是在

之后

(1) 我已经从命令行执行了 git 克隆。

(2) 使用

生成了新的 SSH 密钥
ssh-keygen -t rsa -b 4096

(3) 在 Github 中将上面 #2 中的 .pub 文件的内容设置为新的 SSH 密钥。

我仍然被提示输入我的 Github 用户名和密码。这是为什么?

这是我的 .git 文件夹中的配置。请注意 url 中的 http:// 而不是 https://

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = http://github.com/githubuser/myrepo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master

这是我的代码片段

import git, os

DIR_NAME = 'path/to/dir/with/gitfolder'
git_ssh_identity_file = os.path.expanduser('/path/to/rsa/key')
git_ssh_cmd = 'ssh -i %s' % git_ssh_identity_file

with git.Git().custom_environment(GIT_SSH_COMMAND=git_ssh_cmd):

    repo = git.Repo.init(DIR_NAME)
    origin = repo.remote()
    refs = origin.refs

    for ref in refs:
        if ref.remote_head == "master":
            origin.pull(ref.remote_head)

Note the http:// in the url instead of https://4

只要您使用的是 http(s) url,ssh 就根本无法进行身份验证。

您需要一个 ssh url:

git@github.com:USERNAME/OTHERREPOSITORY.git

http url 仍然依赖 username/password 身份验证方案。
只有 ssh url 会使用您的 public/private 密钥。