Я использую GitPython для выполнения команд в нескольких репозиториях. Работает безупречно с публичными репозиториями. Я пытаюсь запустить скрипт в частных репозиториях, размещенных на экземпляре Gitlab
.
Я прочитал:
Клонирование GitLab через SSH всегда запрашивает пароль (но у меня нет root-доступа к Gitlab)
Gitpython ssh пароль
Я испробовал 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% уверен, что пароли верны. Я дважды проверил. У меня также есть необходимые разрешения. Что мне здесь не хватает? (я также деактивировал 2FA на Gitlab, потому что подозревал, что это проблема)