LoginSignup
1
0

More than 1 year has passed since last update.

VSCode+WSLのGitで "Missing or invalid credentials" エラーの対処法

Posted at

ネタバレ

  • Windows側の資格情報マネージャーでGitHubの資格情報を消してWSLを再起動する

以下,詳しい経緯と解説です.

Gitの失踪

ある日,VSCodeでWSL上のレポジトリ(GitHubで管理)を開いてgit fetchを実行すると,まさかの

WSL
$ git fetch
git: command not found

!!?
消した覚えないんだけど……
もしかして Windows 側で Visual Studio (VSCodeじゃなくて) のインストール作業をしたせい?

それで,とりあえずWSL上でGitを再インストールしたのはいいものの,今度はこんなエラーが.

WSL
$ git fetch
Missing or invalid credentials.
Error: connect ENOENT /run/user/1000/vscode-git-xxxxxxxxxx.sock
    at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1157:16) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'connect',
  address: '/run/user/1000/vscode-git-xxxxxxxxxx.sock'
}
Missing or invalid credentials.
Error: connect ENOENT /run/user/1000/vscode-git-xxxxxxxxxx.sock
    at PipeConnectWrap.afterConnect [as oncomplete] (node:net:1157:16) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'connect',
  address: '/run/user/1000/vscode-git-xxxxxxxxxx.sock'
}
remote: Repository not found.
fatal: Authentication failed for 'https://github.com/******/'

😅

原因調査

  • まずは落ち着きましょう。
  • type gitgitの在り処を確かめても,git is /usr/bin/git(Windows上にあるGitを参照しているわけではない)と出るので,WSL内の問題に思えました.
  • しかし,Windows上のレポジトリをVSCodeで開き,エラーが出るかどうか確かめましょう.
    レポジトリがない場合は新たにクローンするのでも良いです.(認証が必要なプライベートレポジトリの方がいいですね)
    やってみたところ,エラー内容は詳細に出ませんが,クローンできませんでした.

つまり,(WSL関係なく) Windows側の資格情報に問題があったようです.
WSL上のGitの資格情報は,Windows側で保持しているということが分かりました.

対処法: Windows上の資格情報を消す

スタートメニューから「資格情報マネージャー」を開き,「Windows 資格情報」をクリックします.
「汎用資格情報」に一覧がざっと表示されますので,github に関係しそうなものを削除してしまいましょう.

削除後に追加されているのを確かめた感じ,以下の2つが当該の資格情報のようです.

  • vscodevscode.github-authentication/github.auth
  • git:https://github.com

削除後,再びWindows上でクローンを行ったところ,改めて GitHub へのサインインを求められますが,無事にクローンできました!

WSL だとまだ動かない!?

そして次にWSL上のレポジトリでgit fetchを試してみるわけですが,同様に動きません.
(そのおかげで先ほどのエラーメッセージ内容を取得できたわけですが…)

「再起動は全てを解決する」という名言のもと,WSLを再起動します.
全てのWSL関連のものを閉じて少し待つのでもよいですが,確実に再起動するには,Powershell上で以下のコマンドを実行します.
(強制的にシャットダウンされてしまうので注意.)

Powershell
wsl --shutdown

その後,再びgit fetchを試してみたところ,エラーなく正常にフェッチできました.
めでたしめでたし.

まとめ

  • Gitの認証でエラーが出た際は,まずWSL固有の問題か,Windowsでも再現する問題かで切り分ける.
  • WSLにおけるGitの資格情報は,Windows側で管理している.
  • Windowsの資格情報マネージャーでGitHubの資格情報を消去後,WSLを再起動する.

おしまい.

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0