Невозможно клонировать git из Azure DevOps с помощью PAT - PullRequest
0 голосов
/ 01 ноября 2018

Я не могу клонировать простой репозиторий из DevOps Azure. ОС: Ubuntu 18.10

Я делаю это:

  • Получил Azure DevOps
  • Нажмите на правый верхний угол моего имени пользователя
  • Перейти на вкладку безопасности
  • Создайте PAT со всей областью действия (чтобы убедиться, что области нет проблема)
  • Скопировать PAT в буфер обмена
  • Вставьте PAT в другое место, чтобы убедиться, что PAT был скопирован правильно (я знаю ... не безопасно, но это выходит за рамки этого вопроса)
  • Перейти к моей консоли
  • выпуск: git clone https://myorganization.visualstudio.com/myproject/_git/myrepo/
  • Я ввожу имя пользователя и пароль (ПАТ)

Я продолжаю получать это сообщение от Git: fatal: Authentication failed for 'https://myorganization.visualstudio.com/myproject/_git/myrepo/'

Я читал решения других людей, но никто не работал для меня. Я также попробовал это:

  • Передайте токен в форме https://usename:token@myorganization.visualstudio.com/myproject/_git/myrepo/ Я очень удивлен, что люди говорят, что это сработало ... для моего мерзавца жалуется потому что считает: означает порт.
  • пытался активировать / деактивировать диспетчер учетных данных git * Пробовал на Windows и Ubuntu.
  • Пытался активировать и деактивировать простые учетные данные.
  • Пробовал с простыми учетными данными, т. Е. Имя пользователя + пароль.
  • Пытался ввести мое имя пользователя в https://username@....
  • Пытался использовать SSH
  • Попытался использовать http.extraHeader в команде git с заголовком
    Authorization: Basic Base64Encoded(uname:PAT)
  • Попытался использовать http.extraHeader в команде git с заголовком
    Authorization: Bearer PAT
  • Попытался использовать клиент VSCode. Он генерирует PAT самостоятельно, но все еще не может аутентифицироваться и клонировать.
  • Попытался использовать Rider VSTS клиент. Он генерирует PAT самостоятельно, но все еще не может аутентифицироваться и клонировать.
  • Попытался использовать диспетчер учетных данных git для Linux. Он запрашивает код и, когда мы аутентифицируемся в браузере, успешно генерирует PAT. Тем не менее, после этого не может подтвердить подлинность.

Любая подсказка, почему это не работает?

Ответы [ 6 ]

0 голосов
/ 25 июля 2019

У меня была такая же проблема, и я решил ее, используя только HTTPS.

Я понял, что мне нужно было использовать только терминал, а не какие-либо "ярлыки GUI", которые предоставляет dev.azure, поскольку они предназначены для git-credential-manager, который отлично работает на окнах, но не работает в Ubuntu.

Очевидно, что в git-репозитории dev.azure есть другие учетные данные (которые необходимо настроить), а не учетные данные учетной записи Microsoft.

Допустим, моя учетная запись Microsoft называется johndoe@outlook.com с ее паролем Jd1986

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

Здесь вы можете создать учетные данные git, enter image description here

После этого сохраните его и используйте установленные учетные данные. enter image description here

Перейдите к своему терминалу, используйте URL-адрес HTTP для git clone и введите заданные учетные данные. Это сработало для меня.

0 голосов
/ 17 января 2019

Это известная регрессия в curl 7.61.0, которая поставляется с Ubuntu 18.10. Регрессия была исправлена ​​в curl 7.61.1, но в Ubuntu 18.10 этого исправления пока нет. См (и upvote) https://bugs.launchpad.net/ubuntu/+source/curl/+bug/1805203

0 голосов
/ 11 января 2019

Я успешно использовал PAT следующим образом;

  1. скопировать клон URL для вашего хранилища, например git clone https://<domain>.visualstudio.com/<domain>/_git/<domain>
  2. После того, как вы скопировали свой PAT, используйте как;

git clone https://<PAT>@<domain>.visualstudio.com/<domain>/_git/<domain>

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

0 голосов
/ 04 января 2019

Вам необходимо Base64 кодировать свой токен и добавить его в качестве заголовка авторизации HTTP. Это можно сделать с помощью OpenSSL:

PAT="enter-your-pat-here"
REPO_URL="https://myorg@dev.azure.com/myorg/myproject/_git/myrepo"

AUTH=$(echo -n ":$PAT" | openssl base64 | tr -d '\n')

git -c http.$REPO_URL.extraHeader="Authorization: Basic $AUTH" clone $REPO_URL

echo -n "..." | ... | tr -d '\n' - это обычная хитрость в Linux для отправки строки в качестве ввода в команду, которая обычно требует ввода данных пользователем (попробуйте просто написать openssl base64, и вы увидите).

Обратите внимание на ":" в echo -n ":$PAT". Это связано с тем, что в обычном формате «user: token» отсутствует «пользователь».

Чтобы избежать повторного ввода параметра конфигурации с каждой командой git, вы можете добавить заголовок авторизации в локальную или глобальную конфигурацию git:

git config --global http.$REPO_URL.extraHeader "Authorization: Basic $AUTH"

Просмотр изменений с помощью:

git config --global --edit
0 голосов
/ 07 ноября 2018

Я столкнулся с той же проблемой и провел довольно много времени в поисках решения. Наконец я наткнулся на это сообщение , в котором содержалось решение в разделе комментариев Мартиниус79 .

Короче говоря, требовалось передать имя пользователя и PAT, закодированные как base64, через git http.extraheaders для аутентификации.

100% Кредит первоначальному автору, просто включив его здесь, чтобы помочь другим найти его:

Пример: git -c http.extraheader = "АВТОРИЗАЦИЯ: Базовое

Используется базовый токен в кодировке BASE64: TXlHaXRTeW5jVXNlcjo2bHFqNXJkcHEzdXBxZWVmd2o3bDduZXN5NTR3d3gxNHFobDVlanl5NTVkb2g0M3d4YzR * 1013

Базовый токен BASE64 расшифрован: MyGitSyncUser: 6lqj5rdpq3upqeefwj7l7nesy54wwx14qhl5ejyy55doh43wxc4a

Токен состоит из: В этом примере: Вымышленное имя пользователя: MyGitSyncUser Используется PAT: 6lqj5rdpq3upqeefwj7l7nesy54wwx14qhl5ejyy55doh43wxc4a

Надеюсь, это поможет!

0 голосов
/ 02 ноября 2018

Попробуйте: Сначала удалите учетные данные git из диспетчера учетных данных. Попробуйте сгенерировать новый токен личного доступа, чтобы устранить эту ошибку

Error

Зайти в безопасность -> Жетон личного доступа-> Добавить Введите описание, выберите Все области, нажмите Создать токен.

PAT

Скопируйте токен и сохраните его для дальнейшего использования. Этот токен теперь можно использовать вместо пароля для пользователя git.

Token

...