web-dev-qa-db-ja.com

PATを使用してAzure DevOpsからgitをクローンできません

Azure DevOpsから単純なリポジトリを複製できません。 OS:Ubuntu 18.10

私はこれをします:

  • Azure DevOpsにアクセスしました
  • ユーザー名の右上隅をクリックします
  • [セキュリティ]タブに移動します
  • すべてのスコープでPATを作成します(スコープの問題がないことを確認するため)
  • PATをクリップボードにコピーします
  • PATを別の場所に貼り付けて、PATが正しくコピーされたことを確認します(私は知っています...安全ではありませんが、この質問の範囲外です)
  • 私のコンソールに行く
  • 問題: git clone https://myorganization.visualstudio.com/myproject/_git/myrepo/
  • ユーザー名とパスワードを入力します(PAT)

Gitからこのメッセージを受け取り続けます:fatal: Authentication failed for 'https://myorganization.visualstudio.com/myproject/_git/myrepo/'

私は他の人の解決策を読んでいましたが、私のために働く人はいませんでした。私もこれを試しました:

  • トークンを次の形式で渡します https:// usename:[email protected]/myproject/_git/myrepo/ これが機能していると人々が言っ​​ていることに本当に驚いています... :はポートを意味します。
  • Gitの認証情報マネージャーを有効化/無効化しようとしました* WindowsおよびUbuntuで試しました。
  • 単純な資格情報を有効または無効にしようとしました。
  • 単純な資格情報、つまりユーザー名+パスワードで試しました。
  • https:// username @ ....にユーザー名を入れようとしました.
  • SSHを使用しようとしました
  • ヘッダーがのgitコマンドでhttp.extraHeaderを使用しようとしました
    許可:Basic Base64Encoded(uname:PAT)
  • ヘッダーがのgitコマンドでhttp.extraHeaderを使用しようとしました
    承認:ベアラーPAT
  • VSCodeクライアントを使用しようとしました。それ自体でPATを生成しますが、それでも認証と複製はできません。
  • Rider VSTSクライアントを使用しようとしました。それ自体でPATを生成しますが、それでも認証と複製はできません。
  • Linux用のgit資格情報マネージャーを使用しようとしました。コードを要求し、ブラウザで認証すると、PATを正常に生成します。それでも、その後は認証できません。

これが機能しない理由の手がかりはありますか?

7
Jose

このように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で十分なので、ユーザー名もパスワードも必要です。

2
jabu.hlong

これは、Ubuntu 18.10に同梱されているcurl 7.61.0の既知のリグレッションです。回帰はcurl 7.61.1で修正されましたが、Ubuntu 18.10にはまだこの修正がありません。参照(および投票) https://bugs.launchpad.net/ubuntu/+source/curl/+bug/18052

1
Congyi Wu

私は同じ問題を抱えていて、HTTPSのみを使用して解決しました。

Dev.Azureが提供する「GUIショートカット」を使用するのではなく、ターミナルのみを使用する必要があることがわかりました。これらは、Windowsでは正常に動作するがUbuntuでは壊れているgit-credential-managerを対象としています。

どうやら、dev.Azure gitリポジトリには、Microsoftアカウントの資格情報ではなく、異なる資格情報(セットアップする必要があります)があります。

Microsoftアカウントのユーザー名が[email protected]で、パスワードがJd1986であるとします

このクレデンシャルは、必要に応じて、gitクローンを作成しようとすると機能します[〜#〜] not [〜#〜]プロジェクトのgit資格情報を生成して使用します。

ここからgitクレデンシャルを生成できます enter image description here

この後、保存して、設定された資格情報を使用します。 enter image description here

端末に移動し、git cloneのHTTP URLを使用して、指定された資格情報を入力します。これは私のために働いた。

0
Ashish Jacob

試してみてください:まず、資格情報マネージャーからgit資格情報を削除します。このエラーを解決するには、新しい個人用アクセストークンを生成してみてください

Error

[セキュリティ]-> [パーソナルアクセストークン]-> [説明を追加]に移動し、[すべてのスコープ]を選択して、[トークンの作成]をクリックします。

PAT

トークンをコピーして、後で使用するために保存します。このトークンは、gitユーザーのパスワードの代わりに使用できるようになりました。

Token

0
Salman

トークンをBase64でエンコードし、HTTP Authorizationヘッダーとして追加する必要があります。これはOpenSSLで実行できます。

PAT="enter-your-pat-here"
REPO_URL="https://[email protected]/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」の通常の形式では「user」が欠落しているためです。

各gitコマンドで構成オプションの再入力を回避するには、ローカルまたはグローバルgit構成に認証ヘッダーを追加できます。

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

変更を表示するには:

git config --global --edit
0
Sebastian N