セキュリティ

認証情報ヘルパー

Gitcito は 3 種類の秘密情報を扱っていて、多くの人はそれらを 1 つのものだと思っています。 無理もありません。

保管しているのは
ホストの API トークン — プルリクエスト、イシュー、CI のチェック Gitcito が OS のキーチェーン に
git@… の通信 あなたの SSH 鍵。システムの ssh エージェント経由
https:// の通信 git 自身の認証情報ヘルパー

3 つめは、うまく行かなくなるまで誰も機能だとは思いません。そして壊れると、git で最も よくある 2 つの不満を生みます。なぜまた聞いてくるのか と、なぜ失効させたトークンを まだ送っているのか です。

⌘K → 認証情報ヘルパー。

設定されたヘルパー、ホストごとのルール、平文ファイルの警告

ここに映っているもの

設定されているすべての credential.helper が、その由来のスコープごとに並びます — system、global、そしてこのリポジトリです。ヘルパーは積み重なります。git は順に すべてへ尋ねるので、リポジトリ単位のものがグローバルのものを置き換えるわけではありません。

それぞれはあなたのマシンに照らして確認されます。

印 意味
利用できます ヘルパーのプログラムが存在し、実行できます
未インストール 設定はされているのにプログラムがありません — 毎回の入力要求はすべて手入力に落ちます
パスワードを平文ファイルに保存 store ヘルパーです(下記参照)

特定のホスト向けのルール には credential.<url>.* のセクションが並びます。これらは 一致する URL について通常の設定より優先され、「なぜこのホストだけ挙動が違うのか」の答えは たいていこれです。

選び方

ヘルパー パスワードの行き先
osxkeychain macOS のキーチェーン — 暗号化され、ユーザー単位
manager Git Credential Manager(Windows、クロスプラットフォーム)
wincred Windows 資格情報マネージャー
libsecret Linux のシークレットサービス(GNOME Keyring、KWallet)
cache メモリ上に 15 分間。ディスクには何も残りません
store ホームディレクトリの平文ファイル。暗号化なし

Gitcito は、このマシンに実際に入っているものを提示し、あなたの OS に合うものに印を付け、 残りをグレーアウトします。

スコープは重要です。 すべてのリポジトリで(グローバル) はグローバルの設定へ書き 込みます。ほとんどの場合こちらが望みのものです。このリポジトリだけ は、別のところへ 認証する変わったリポジトリのためのものです。

store ヘルパーと ~/.git-credentials

store は https://user:password@host という行を ~/.git-credentials へ、平文で、 いっさいの暗号化なしに書き込みます。あなたの権限で動くものなら何でも読めます。 スクリプトも、依存パッケージの postinstall も、何でもです。

そのファイルがあれば、このページはその旨を伝え、件数を数えます。中身を表示することは ありません — 件数こそが要点であり、表示のために内容を読むのは同じ過ちだからです。

見つかって、それが意図したものでなかったなら、ここで本物のヘルパーを選び、ファイルを 削除して、もう一度だけ認証し直してください。

保存された認証情報を忘れさせる

トークンを失効させたり入れ替えたりすると、ヘルパーは古いものを渡し続け、プッシュは 何も名指ししない 401 で失敗し続けます。忘れさせる は、そのホストの項目を消すよう 設定済みのヘルパーへ依頼します — git credential reject、git 自身が文書化している 経路です。

その途中で何かを読み出すことはありません。生のパスワードを標準出力へ書き出してしまう コマンド git credential fill を、Gitcito が呼ぶことは決してありません。

次のプッシュで一度だけ尋ねられ、ヘルパーが新しい答えを保存します。

知っておくべき制限

  • これは git の保管先であって、Gitcito のものではありません。 ここを変えると ターミナルの挙動も変わります — それが狙いですが、変える前に知っておく価値があります。
  • システムスコープのヘルパーは表示されるだけで、編集できません。 管理者だけが書ける 設定ファイルにあるからです。
  • Gitcito はヘルパーが持っている中身を一覧できません。 秘密情報そのものを渡さずに それを見せる認証情報 API は存在しません。だからこのダイアログは設定を報告し、依頼が あれば消す、それだけです。
  • Gitcito に渡したトークンは別物です。 一方を失効させても、もう一方には触れません。 キーチェーン側については セキュリティ を見てください。

関連項目: セキュリティ · SSH 鍵 · フェッチ、プル、プッシュ

この翻訳を GitHub で改善