web-dev-qa-db-ja.com

2FAを有効にした後、Git認証が失敗する

2FAを有効にしただけで(他に行った変更は考えられません)、gitはユーザー名とパスワードを要求しました。私は両方を提供しましたが、それらは「間違っていました」。ここで多くの解決策を試しました: Git Pushにはユーザー名とパスワードが必要です しかし、それは機能しませんでした。特に、httpsからsshに切り替えるとき、sshキーは

許可が拒否されました(公開鍵)。致命的:リモートリポジトリから読み取ることができませんでした。

$ git Push
warning: Push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global Push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global Push.default simple

See 'git help config' and search for 'Push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Username for 'https://github.com': **********
Password for 'https://[email protected]': 
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/mlbileschi/scala.git/'

任意のヒント?

73
Max Bileschi

アクセストークンを生成する必要があります。 設定ページ に移動して作成できます。

enter image description here

このアクセストークンをコマンドラインでパスワードとして使用します。

89
Gergo Erdosi

エンドツーエンドのソリューションには3つのステップが必要です。

  1. ゲルゴ・エルドシに称賛を。彼の答えはほぼ正しいです。Githubがその設定ページを変更しただけです。 2016年後半の時点で、アクセストークンを生成する必要がありますPersonal access tokens page から。

    enter image description here

    このアクセストークンをコマンドラインでパスワードとして使用します。

  2. ユーザー名をプロジェクトのリモートURLに含めることで、ユーザー名を永続化できます。それを行う方法の1つは、.git/configは、url行を次の形式に変更します。

    url = https://[email protected]/owner/repo.git

  3. これを1回だけ実行することにより、パスワードを保持できます。

    $ git config credential.helper store

    そして、あなたの将来のgitパスワードは、フォーマットhttps://user:[email protected]

    パスワードをプレーンテキストで保存することは、通常、セキュリティ上のリスクと見なされます。ただし、この2FAの場合、資格情報は実際のパスワードではなく、ランダムに生成された文字列です。使用するのと同じくらい安全です ssh秘密鍵 パスフレーズなしのssh秘密鍵。警告:このマシンで2FAを使用せずに別のgitアカウントを使用する場合、それらの実際のパスワードもプレーンテキストで保存されることに注意してください。

PS:あるいは、パスフレーズで保護されたssh秘密鍵を使用して、sshベースのログインを使用することもできます。

27
RayLuo

同様の問題がありました。ユーザー名を含めるために、gitコマンドで使用されるURLを変更する必要がありました。

git Push https://[email protected]/mlbileschi/scala.git

次に、PWを要求するときに、Gergo Erdosiの答えの指示に従って作成したアクセストークンを使用します。

13
Jester

Linuxでは、SSHキーを使用してGitHub IDを認証できます。

1)新しいSSHキーの生成( source

ターミナルを開きます。

GitHubのメールアドレスに置き換えて、以下のテキストを貼り付けます。

ssh-keygen -t rsa -b 4096 -C "[email protected]"

これにより、提供された電子メールをラベルとして使用して、新しいsshキーが作成されます。


2)キーをGitHubアカウントにリンクする

ターミナルを開き、生成された公開キーをコピーします

cat ~/.ssh/id_rsa.pub

何かを出力する必要があります

ssh-rsa AAAAB3NzaC1y ... mKAKw== [email protected]

https://github.com/settings/keys に移動してNew SSH Keyをクリックし、タイトルを付けて公開キーをコピーして貼り付けます。

enter image description here


3)git Originをhttps://からsshに変更します

ターミナルを開き、リポジトリの場所にcdして入力します

git remote set-url Origin [email protected]:<github username>/<repository name>
7
Jossef Harush

これは私のために働いた:

  • [your-git-repo] /。git/configに移動します

  • [remote "Origin"]URLキーをhttpプロトコルからgitに変更します。

urlの値が https://github.com/ 。gitの場合、[email protected]:<repo-url>.git

1
imsinu9