我正在使用GitPython在多个存储库上执行命令。它可以与公共存储库完美配合。我正在尝试在Gitlab
实例上托管的私有存储库上运行脚本。
我已阅读:
GitLab cloning via SSH always prompts for password(但我无权访问Gitlab)
我尝试了3种方法来克隆私有存储库:
方法1
from git import Repo
from git import Git
git_ssh_identity_file = os.path.expanduser('~/.ssh/id_rsa')
git_ssh_cmd = 'ssh -i {}'.format(git_ssh_identity_file)
with Git().custom_environment(GIT_SSH_COMMND=git_ssh_cmd):
Repo.clone_from(url, destination)
方法2
from git import Repo
from git import Git
ssh_executable = os.path.join('.', 'ssh_executable.sh')
with Git().custom_environment(GIT_SSH=ssh_executable):
Repo.clone_from(url, destination)
在ssh_executable.sh
内:
#!/bin/sh
ID_RSA=~/.ssh/id_rsa
exec /usr/bin/ssh -o StrictHostKeyChecking=no -i $ID_RSA "$@"
方法3
import subprocess
p = subprocess.Popen(['git', 'clone', url], cwd=destination)
p.wait()
所有这些方法都会提示我输入密码3次:
Popen(%s,cwd =%s,Universal_newlines =%s,shell =%s)
密码:
我尝试了 root密码, ssh密钥密码以及Gitlab的登录密码。这些都不起作用。同样以sudo
运行脚本并提供密码最初并没有任何改变。我100%肯定密码正确。我仔细检查了。我也拥有所需的权限。 我在这里缺少什么? (我还停用了Gitlab上的2FA,因为我怀疑是问题所在)