Git не удается клонировать подмодуль с помощью ssh в конвейере azure devops

Я пытаюсь использовать конвейер Azure DevOps. Основной репозиторий, на котором должен работать конвейер, клонируется просто отлично, за исключением того, что я не могу клонировать его подмодули. Подмодули добавляются с использованием URL-адресов SSH, потому что это то, что настроено на моем компьютере.

Процесс клонирования завершается с ошибкой:

Please make sure you have the correct access rights
and the repository exists.
fatal: clone of '[email protected]:v3/<rest_of_link>' into submodule path '/home/vsts/work/1/s/Modules' failed
Failed to clone 'Modules' a second time, aborting

Итак, поскольку я использую SSH, я создал пару ключей RSA и использую собственную задачу Azure для их установки, как показано ниже:

- task: InstallSSHKey@0
  inputs:
    knownHostsEntry: '<entry>'
    sshPublicKey: '<public_key>'
    sshKeySecureFile: 'id_rsa'

Это удается со следующим выводом:

/usr/bin/ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXFGcDdd/agent.1614; export SSH_AUTH_SOCK;
SSH_AGENT_PID=1615; export SSH_AGENT_PID;
echo Agent pid 1615;
/usr/bin/ssh-add -L
The agent has no identities.
/usr/bin/ssh-add /home/vsts/work/_temp/id_rsa
Identity added: /home/vsts/work/_temp/id_rsa (jose@42we-desktop)
/usr/bin/ssh-add
Finishing: InstallSSHKey

Отлично, правда? За исключением того, что если я попытаюсь инициализировать подмодули с помощью:

GIT_SSH_COMMAND = "ssh -v" git submodule update --init --recursive

Это все еще терпит неудачу.

Глядя на дополнительную информацию, предоставленную с помощью флага -v, я вижу, что он изначально принимает ключ и даже говорит Authenticated to ssh.dev.azure.com, но затем терпит неудачу после git-upload-pack

debug1: Authentications that can continue: password,publickey
debug1: Next authentication method: publickey
debug1: Offering public key: <key> RSA SHA256 <key> agent
debug1: Server accepts key: <key> RSA SHA256 <key> agent
Authenticated to ssh.dev.azure.com ([20.125.155.0]:22) using "publickey".
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: pledge: filesystem
debug1: Sending environment.
debug1: channel 0: setting env GIT_PROTOCOL = "version=2"
debug1: channel 0: setting env LANG = "C.UTF-8"
debug1: Sending command: git-upload-pack 'v3/name/project/repo'
remote: Public key authentication failed.
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 3592, received 2304 bytes, in 2.1 seconds
Bytes per second: sent 1725.1, received 1106.5
debug1: Exit status 2
fatal: Could not read from remote repository.

Почему не получается?? Это действительно не имеет смысла в моей голове, и вывод, который я вижу, если я клонирую на своем компьютере (работающем под управлением Fedora), остается таким же до «git-upload-pack».

РЕШЕНО РЕШЕНО РЕШЕНО РЕШЕНО

Оказывается, мне также нужно было добавить сгенерированный SSH-ключ в свою учетную запись. Сначала я не думал, что это имеет смысл, потому что аутентификация должна происходить между самими лазурными машинами... в любом случае. Это сделано и это работает!

Вы можете опубликовать свое решение в качестве ответа здесь и принять ответ, чтобы помочь тем, у кого такая же проблема.

Suki Ji-MSFT 22.11.2022 03:07
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
1
112
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оказывается, мне также нужно было добавить сгенерированный SSH-ключ в свою учетную запись. Сначала я не думал, что это имеет смысл, потому что аутентификация должна происходить между самими лазурными машинами... в любом случае. Это сделано и это работает!

После создания пары ключей, добавления закрытого ключа в библиотеку Azure и открытого в сценарий YAML, вам также необходимо добавить открытый ключ к своим личным ключам доступа в своем профиле azure devops.

Другие вопросы по теме