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 密钥。
我正在尝试使用 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 密钥。