怒られた
なお、credential managerもwincredと同様にWindowsの資格情報として保管されます。
GitをWindowsで使うとき、httpsのパスワードを記憶させるのにgit-credential-wincredって言うのがある。Windowsの資格情報としてパスワードを保存する、セキュアで楽で速いツール。GitHubのヘルプにもある。
先日、GitHubのユーザー名を変えたが、そのままこれを使ってpushしようとすると
1 2 |
remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/foo/bar.git' |
って怒られた。ユーザー名変わってるし当たり前なんだけど何回やってもでるし変え方が分からなかった。
資格情報マネージャーから変更
調べてみたらcodeplexのFAQにどこに保存してあるの?って書いてあった。
Windowsの資格情報なので資格情報マネージャーから変えれた。
コントロールパネル→ユーザーアカウント→資格情報の管理→Windows 資格情報
汎用資格情報に例えばGitHubならgit:https://github.com
ってのがあるので現在のユーザー名とパスワードにしてやればおk。ちなみに2FA(二段階認証)を利用している場合はこのユーザー名をGitHubのユーザー名、パスワードをパーソナルアクセストークンにしておけばたぶん大丈夫。(Creating a personal access token for the command line – User Documentation)
結局Macの時(keychain)と同じような設定変更でした。以上。
コマンドラインから変更(削除)する
gitのcredentialヘルパーはgitのサブコマンドとしてインストールされたものを利用するので、共通のインタフェースでそのAPIを叩くことができる。
たとえばGCMでgithub.comの認証情報を表示する場合は以下のような感じ。
1 2 3 4 |
$ git credential-manager get⏎ protocol=https⏎ host=github.com⏎ ⏎ |
すると、保存されているユーザー名とパスワードが平文で(!!)表示される。パーソナルアクセストークンがGCMで登録されている場合のユーザー名は PersonalAccessToken
になってた。
1 2 |
username=PersonalAccessToken password=exampletoken |
あるいは以下のように標準入力でurlを指定してもいい。
1 2 3 4 |
$ git credential-manager get <<EOS protocol=https host=github.com EOS |
結果は同様。
同様に、 erase
で認証情報の削除ができる。
1 2 3 4 |
$ git credential-manager erase⏎ protocol=https⏎ host=github.com⏎ ⏎ |
または
1 2 3 4 |
$ git credential-manager erase<<EOS protocol=https host=github.com EOS |
この後でいつもどおりpushし直せば再度認証を求められるのでユーザー名とパスワード(とワンタイムパスワード)を用いてログインすればいい。
GCM以外の場合もcredential-manager
のかわりにcredential-osxkeychain
のようにヘルパー名を指定すれば任意のCredential helperにて同様のアクションができる。
そのほか、GCMにはdelete
コマンドも存在するようだが、手元ではどうもうまくいかないので詳細求む。
ユーザー名変更編は続きます。多分。