Клон GitPython через ssh запрашивает неизвестный пароль - PullRequest
0 голосов
/ 01 ноября 2018

Я использую 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, потому что подозревал, что это проблема)

...