Visual Studio Codeは常にgit資格情報を要求する


218

Visual Studio Codeを使い始め、テストプロジェクトをGitHubに保存しようとしましたが、Visual Studio Codeは常にGitHubの資格情報を要求してます。

私は自分のPCにGitHubデスクトップGitをインストールしましたが、すでに実行しました。

 git config --global credential.helper wincred

しかし、それでもVisual Studio Codeは資格情報を求めています。

何か助けは?

これは、ユーザープロファイルフォルダーにある私の.gitconfigファイルです。

    [filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = ddieppa
[user]
    email = fake@live.com
[credential]
    helper = wincred

これは、資格情報を要求するポップアップウィンドウです。

ここに画像の説明を入力してください

私は私の入力のGitHubポップアップで資格情報を、それでもこのエラーを取得Gitの中に出力ウィンドウVisual Studioのコード

remote: Anonymous access to ddieppa/LineOfBizApp.git denied.
fatal: Authentication failed for 'https://github.com/ddieppa/LineOfBizApp.git/'

どのGItHub URLを使用していますか?HTTPまたはGIT(SSH)?HTTP URLを使用している場合は、URLにユーザーとパスワードを含める必要があります。GIT URLを使用して、ユーザーのSSHキーリストに公開SSHキーを追加することをお
勧めし

@yorammi私はgitを初めて使用するため、GithubデスクトップとGitをインストールし、Visual Studio Codeを使用してプロジェクトを保存しようとしたため、何を渡しているかわかりません。どうやってそれを知るのですか?
ddieppa

@ddieppa GitHubデスクトップには、https接続で2要素認証を処理する方法があります。しかし、それは他のツールを壊します。回答のように、ここで元のURLをhttpsからsshに変更する必要があります。
Lex Li

回答:


157

最終更新日:2019年3月5日

98回の賛成投票の後、私は説明で真の答えを出す必要があると思います。

なぜVSコードはパスワードを要求するのですか?VSCodeは自動フェッチ機能を実行するため、GitサーバーにはIDを認証するための情報がありません。次の場合に発生します:

  • gitリポジトリにhttpsリモートURLがあります。はい!この種のリモコンは毎回絶対に聞いてきます。ここに例外はありません!(以下の解決策として、一時的にトリックを使用して承認をキャッシュすることができますが、これはお勧めできません。)
  • gitリポジトリにsslリモートURLがありますが、ssh公開鍵をgitサーバーにコピーしていません。ssh-keygenキーを生成してgitサーバーにコピーするために使用します。できた!このソリューションは、端末でパスワードを再入力する必要もありません。答えについては、ここで@Fnaticalによる適切な指示を参照してください。

この回答の最後にある更新された部分は、実際にはまったく役に立ちません。(実際には、ワークフローが停滞します。)VSCodeで発生していることを停止し、これらの発生をターミナルに移動するだけです。

この悪い答えが長い間あなたに影響を与えていたら申し訳ありません。

-

元の答え(悪い)

私はVSCodeドキュメントで解決策を見つけました:

ヒント:VS CodeがGitリモートと通信するたびに資格情報の入力を求められるのを防ぐために、資格情報ヘルパー設定する必要があります。これを行わない場合は、取得するプロンプトの数を減らすために...メニューでAutofetchを無効にすることを検討してください。

したがって、Gitがしばらくの間パスワードをメモリに保存するように、資格情報ヘルパーをオンにします。デフォルトでは、Gitはパスワードを15分間キャッシュします。

ターミナルで、次のように入力します。

git config --global credential.helper cache
# Set git to use the credential memory cache

デフォルトのパスワードキャッシュタイムアウトを変更するには、次のように入力します。

git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

更新(元の回答が機能しない場合)

上記と同じようにVS Codeとconfigをインストールしましたが、@ ddieppaが言ったように、私にとってもうまくいきませんでした。だから私はユーザー設定でオプションを見つけようとしました、そして私は「git.autofetch」= trueを見ました、今それをfalseに設定してください!VSコードは、パスワードを繰り返し入力する必要がなくなりました!

メニューで、[ファイル]、[設定]、[ユーザー設定]の順にクリックし、次のように入力します。

このファイルに設定を配置して、デフォルト設定を上書きします

{
  "git.autofetch": false
}

2
私はそれを試しましたが、うまくいきませんでした、私はこれも使いました:$ git config --global credential.helper wincred
ddieppa

自動フェッチソリューションは常にポップアップの問題を防ぎますが、プッシュとプルのたびに認証情報を入力する必要があります。http / sを備えたPCを使用している場合は、以下の認証情報マネージャーソリューションが適切に機能します。
ruttopia

3
アクションを開始していない場合、特に資格情報を要求する場合はポップアップ表示しないでください。これが安全であり、なりすましではないことをどのようにして確認しますか?
Anthony Johnston

7
その設定に注意してください!資格情報を覚えておくためのものではありません。git-fetchを自動的に支援することについて話している。詳細については、atlassian.com / git / tutorials / syncing#git-fetchをご覧ください。資格情報の保存に関する限り、コマンドを使用しgit config --global credential.helper cacheます。詳細については、git-scm.com / book / gr / v2 / Git-Tools-Credential-Storageをご覧ください。
2017年

7
自動フェッチをオフにすることを提案することは、「放っておく」オプションとしては問題ありません。ただし、「ソフトウェアが機能しない場合は、使用を中止してください」と言ったのと同じです。人々が違いを理解することは重要です。この回答の「更新」の部分は代わりに「それが機能しない場合」と言うことをお勧めします。実際に問題を修正することなく、煩わしさをやめることができると説明します。UPDATEの上の回答の一部は実際には正しいです(少なくとも、私のために機能したドキュメントリンクに従ってください)
Don

66

次のように資格情報を設定できるはずです。

git remote set-url origin https://<USERNAME>:<PASSWORD>@bitbucket.org/path/to/repo.git

次のようにリモートURLを取得できます。

git config --get remote.origin.url


5
パスワードに@が含まれている場合、URLはどうなりますか?
Suvonkar 2017

これは本当にいい方法です。1つの質問ですが、これらの資格情報はローカルファイルシステムのどこに保存されますか?
Teoman Shipahi

1
.git \ configファイル内。
yohosuff

また、<PASSWORD>はオプションです。パスワードをローカルディスクに保存せず、引き続きプロンプトが表示されるようにする場合は注意してください。
ベンバレス

個人用アクセストークンをプロビジョニングしてパスワードに使用することもできます。これにより、おそらくプレーンテキストで保存されている実際のアカウントパスワードを公開しません。また、必要に応じて、またはシステムが失われたり侵害されたりしたと思われる場合は、簡単にプロビジョニングを削除できます。
CTS_AE

55

これは私のために働いています:
1.資格情報heplerをstoreに設定します
$ git config --global credential.helper store
2.次に、必要かどうかを確認します:
$ git config --global credential.helper store

ここから引用したgit bashを使用する場合の簡単な例(現在のリポジトリのみで機能し--global、すべてのリポジトリで使用)

$ git config credential.helper store
$ git push http://example.com/repo.git
Username: < type your username >
Password: < type your password >

[数日後]
$ git push http://example.com/repo.git
[資格情報は自動的に使用されます]

VS Codeでも動作します。

より詳細な例と高度な使用法はこちら

注:ユーザー名とパスワードは暗号化されず、プレーンテキスト形式で保存されるため、パーソナルコンピュータでのみ使用してください。


2
なぜこのキャッシュがubuntu 18.04とvsコードで機能しないのか分かりません。storeそれをやった。
D.ダン

1
安全ではない。代わりにキャッシュを使用してください。あなたの「個人的な」コンピュータがハッキングされます場合は、あなたのgitの資格情報があまりにもハッキングされる可能性があります...
Hypersoftシステム

1
キャッシュは資格情報をメモリに保存します。これは長期的なソリューションではありません。ユーザー名とパスワードを毎回入力する必要はありませんが、それでもかなり頻繁に入力する必要があります。
Vaibhav Vishal

1
私はこの答えが一番好きです。VS Codeを使用してコードをオリジン(GitLabなど)にプッシュするたびにユーザー名/パスワードの入力を求められたくない
Sean McCarthy

この方法は安全ではないと私はまだ主張しています。クレデンシャルは `〜/ .git-credentials`ファイルに保存され、システムが危険にさらされたときに悪用される可能性があります。代わりにsshキーに変更httpssshて使用してください。
Mohith7548

21

次の手順では、次の方法について説明します。

  1. SSHキーを生成する(パスフレーズなし**)
  2. 手順1で生成した公開鍵をGitリポジトリに追加します
  3. 上記の手順が正常に完了したことを確認します
  4. 最初のコミットを行います(ユーザー名/パスワードを入力する必要はありません)

**作業が特に機密性の高い場合、パスフレーズなしでSSHキーを生成することは賢明ではありません。

OS -Fedora 28 | エディター -VSコードv1.23.0 | リポジトリ -Git

SSHキーを生成します。

  • ssh-keygen -t rsa -C "email@goeshere.com"
  • キーを保存するファイルを入力:Enter キーを押します
  • パスフレーズを入力:Enterキーを押します
  • 同じパスフレーズをもう一度入力します:Enterキーを押します

上記の手順を完了すると、公開鍵の場所がターミナルウィンドウに表示されます。現在ログインしているユーザーが「bob」の場合、公開鍵の場所は/home/bob/.ssh/id_rsa.pubになります

公開鍵をコピーしてGitHubにインポートします。

  • cat /home/bob/.ssh/id_rsa.pub

  • 端末ウィンドウに表示されている公開鍵全体をクリップボードにコピーします

  • 移動しhttps://github.comとサインイン
  • 画面の右上隅にあるユーザーアイコンをクリックし、[ 設定]を選択します
  • SSHおよびGPGキーをクリックします
  • [ 新しいSSHキー]をクリックします
  • タイトルを入力し、クリップボードにコピーした公開キーを最初の箇条書きに貼り付け、[ SSHキーの追加 ] クリックします

上記の手順を確認します。

  • ssh -T git@github.com

  • yes

  • こんにちは !認証は成功しましたが、GitHubはシェルアクセスを提供していません。

ユーザー名/パスワードを入力せずに最初にコミット/プッシュ: -touch test.txt

  • git add test.txt

  • git commit-エディターを開き、メッセージを入力してファイルを保存します。viがエディターの場合はi、ファイルが開いたらを押し、メッセージを入力し、escを押してから、Enter :xを押して変更を保存します。

  • git push

遭遇する可能性がある唯一の問題は、GitHubにSSHで接続しようとしたときです。このリンクはいくつかの支援を提供します-

ハッピーハンティング!


20

Git Credential Manager For Windows」をインストールしてみてください(および、資格情報マネージャーをセットアップするための以下の手順を実行します)。

Git(VS Codeなど)を使用するアプリ内で必要な場合、Visual Studio Team Servicesの資格情報入力に必要なダイアログを「魔法のように」開きます。


3
「Git Credential Manager for Linux」もあったら良かったです。ああ、ssh-agentもう走ってるの待って。しかし、VS CodeはLinuxではそれを無視しているようです。
ウィッキー2016

これは私にとって最も簡単な解決策です。そしてそれは素晴らしい働きをします!これを指摘してくれてありがとう
dapidmini

20

私がしなければならなかったすべてはこのコマンドを実行することでした:

git config --global credential.helper wincred

次に、パスワードを2回求められました。

次回はパスワードを要求せずに機能しました。


2
ありがとう!問題は解決しました、そしてこれも
Jeffrey Roosendaal

4
Ubuntuでは、のstore代わりにを使用してくださいwincred
Cees Timmerman、

1
これは私のために働いた!たとえばgit config --global credential.helper 'cache --timeout==1209600'、デフォルトの15分ではなく、2週間持続させることもできます。出典:help.github.com/en/github/using-git/...
アンドリュー・

1
^これについて詳しくは、こちらを参照してください:git-scm.com/docs/gitcredentials git-scm.com/docs/git-credential-cache git-scm.com/docs/git-credential-store storeは、永続的にそれをディスク。また、私の以前のコメントにはエラーがあります:使用しない==、使用します=。編集するには遅すぎます。
アンドリュー

18

http / httpsの代わりにsshを使用します。

ローカルマシンにsshキーを設定し、それらをgitサーバーにアップロードして、URLフォームhttp://をに置き換えるgit://必要があります。パスワードを使用する必要はありません。

sshを使用できない場合は、これを設定に追加します。

[credential "https://example.com"]
    username = me

ドキュメントはこちら


GitHubでのSSHキーの使用


これらの手順に従うだけで、すぐにSSHキーを設定できます。

  • 新しいsshキーを生成します(すでにキーを持っている場合はこの手順をスキップします)
    ssh-keygen -t rsa -C "your@email"

  • home/.sshディレクトリ(またはUsers/<your user>.sshウィンドウの下)にキーを設定したら、それを開いてコンテンツをコピーします


shキーをgithubアカウントに追加する方法は?

  • githubアカウントにログイン
  • 右上のランチャーをクリックします(設定)
    githubアカウント設定
  • クリックしてください SSH keys
    sshキーセクション
  • クリックしてください Add ssh key
    SSHキーを追加
  • キーを貼り付けて保存

そして、あなたはすべて行く準備ができました:-)


4
また、根本的な原因を明確にする必要があります。私の場合、2要素認証を有効にしたので、SSHがリポジトリに接続する唯一の方法です。https接続があると、このようなプロンプトが表示されます。
Lex Li

@codeWizard何が起こったのか正確には思い出せませんが、VS Codeは正常に機能していました。追加の構成なしでGitHubリポジトリに接続することを意味します。おそらくGithubデスクトップの後にGitをインストールしたことが問題だったと思いますが、それは可能でしょうか?
ddieppa

VCはその資格情報を内部的に保存する場合があり、gitを再インストールまたはアップグレードすると、構成が変更される場合があります。私はVCユーザーではなくUNIXの人なので、自分のマシンでテストすることはできません。
CodeWizard、2015

3
@codeWizard VS Codeはオープンソースでマルチプラットフォームであり、Windows、MacOSまたはLinuxで実行できます:)、sshバリアントで作業して、何が得られるかを確認します
ddieppa

1
ドキュメントへのリンクが壊れています。
Vishal

13

一般に、組み込みの資格情報ストレージ機能を使用できます。

git config --global credential.helper store

または、Windowsを使用している場合は、その資格情報システムを使用できます。

git config --global credential.helper wincred

または、MacOSを使用している場合は、その資格情報システムを使用できます。

git config --global credential.helper osxkeychain

最初のソリューションは、ほとんどの状況で最適です。


6

自動Git認証。v1.45 リリースノートから

GitHubリポジトリのGitHub認証

VS CodeにGitHubリポジトリに対する自動GitHub認証が追加されました。システムで資格情報マネージャーを構成せずに、パブリックリポジトリとプライベートリポジトリの間でクローンを作成、プル、プッシュできます。統合ターミナルで呼び出されたGitコマンド(git pushなど)でも、GitHubアカウントに対して自動的に認証されます。

git.githubAuthentication設定でGitHub認証を無効にすることができ ます。git.terminalAuthentication 設定で端末認証統合を無効にすることもできます。


すごい!Linux(Ubuntu 18.04 + KDE Plasma)でこれら2つの設定を無効にすると、資格情報の処理が修正されます。askpass = /usr/bin/ksshaskpass私が有効にしたこれらの2つは上書きさ.gitconfigれ、その結果、毎回ユーザー名とパスワードを尋ねられました。これはおそらく、より多くのマシンでバージョン1.45の役割を実行することにより、より多くの賛成を得られるでしょう。
Andrei Sinitson

4

Windows 10の場合:コントロールパネル/資格情報マネージャー/ Windows資格情報に移動します-> gitリンクをクリックします->編集->新しいパスワードに更新します。それはうまくいくはずです


2

パスフレーズなしのSSHキーを使用します。

たぶん、これは明らかです(私にはわかりませんでした)。パスフレーズが絶対に必要な場合も問題は解決しませんが、これはMacでの私の状況ではまともな妥協でした。


2

しばらくこのようなものと戦った後、特にGitHubとBitBucketの両方に複数のアカウントがある場合、私は良い解決策を思いついたと思います。ただし、VSCodeの場合、最終的にはGit Bashターミナルから開始するようになり、bashセッションから環境変数を継承し、どのssh-agentを参照するかを認識しました。

これは古い投稿だと思いますが、必要な情報を入手するための場所を1つ見つけるのにまだ苦労していました。さらに2017年以降、ssh-agentは、リポジトリにアクセスしようとしたときにのみ、パスフレーズの入力を求める機能を備えています。

誰かが興味を持っているなら、私はここに私の発見を置きます:


1

その記事に従ってください

GIT_SSH envを設定するだけです。var。Puttyのplink.exeプログラムに追加します。(次に、pageant.exeを認証エージェントとして使用します)


1

次の手順で問題を解決します。

ソフトウェアVscodeとgitをアンインストールして、同じものを再インストールしました。gitリポジトリのクローンURLをsshからhttpsに変更しました。


1

Visual Studio Codeにも同様の問題がありました。

リモートURLをhttpsに変更することで解決しました。(ファイル.git / config)

[remote "origin"]
    url = https://user@server.com/plesk-git/project.git

そしてまた

git config --global credential.helper wincred

再び引っ張られて、Windows資格証明ポップアップが出て、問題が解決しました。


0

私の場合、SSHキーを使用してリモートリポジトリをセットアップしましたが、会社のドメインポリシーによりHOMEDRIVE環境変数が自動的にネットワーク共有に設定されていたため、gitはそれらを見つけることができませんでした。起動する前にシェルでその環境変数を変更code .すると、VSCodeが正しい環境変数を継承し、git出力ウィンドウでviolaの接続エラーが発生しなくなりました。

ここで、ドメインポリシーを上書きする方法を理解する必要があるので、HOMEDRIVEは常にc:\users\marvhenディレクトリのデフォルトの場所であるローカルディレクトリをポイントします.ssh


0

私は次の手順を実行することによってこれを止めることができました。

  1. Gitデスクトップをアンインストールします(これが必要かどうかはわかりません)
  2. Credentials Managerをアンインストールしcd "C:\Program Files\Git\mingw64\libexec\git-core"てから、git-credential-manager.exe uninstall
  3. 資格情報ヘルパーをリセットしてwincredを使用する git config --global credential.helper wincred
  4. いくつかの変更をプッシュし、資格情報を再入力するためのユーザーVSコード。

注:私はパスワードとしてパーソナルアクセストークンを使用していました。


0

私は簡単な方法で同様の問題を解決しました:

  1. CMDまたはターミナルに移動
  2. タイプ git pull origin masterます。'origin'をリモート名に置き換えます
  3. 資格情報を要求します。それを入力する。

それで全部です。問題を解決しました


0

上記のssh構成エントリの追加は別として

Windowsの場合

Set-Service ssh-agent -StartupType Automatic 

PowerShellで今vsコードはプロンプトを表示すべきではありません...


0

Windows 10の場合、Windowsのキータイプcredを押すと、コントロールパネルに[資格情報マネージャー]が表示されます。クリックして開き、関連するキャッシュされた資格情報を削除してから、もう一度やり直してください。正しいパスワードでユーザーIDのパスワードキーが要求され、問題ありません。 。

ネットワークパスワードを変更したときに発生した


0

私は通常、この単純なコマンドを実行して、gitリモートURLをhttpsからsshに変更します

git remote set-url origin git@github.com:username/repo-name-here.git
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.