はじめに
Set Up Git · GitHub HelpのNext steps: Authenticating with GitHub from Gitによると、GitHubへのアクセスはSSHよりHTTPSがお勧めらしいです。
OSXのキーチェーンにgitで使用するパスワード/アクセストークンを保存する設定
Caching your GitHub password in Git · GitHub Help
私はHomebrewでgitをインストールしているのでgit-credential-osxkeychainはインストール済みでした。
ということで、設定は以下のコマンドを実行するだけです。
git config --global credential.helper osxkeychain
この設定をしておくと、GitHubからgit cloneするときにユーザ名(メールアドレス)とパスワードを聞かれて、入力するとキーチェーンに保存されます。以降はパスワードの入力は不要になります。
GitHubの2段階認証を使っている場合はアクセストークンの作成が必要
GitHubの2段階認証を使っている場合はパスワードではなくアクセストークンが必要になります。
Githubの2段階認証を有効にしてgitからの認証が弾かれる時の話 - 頼りないニモニックが参考になりました。ありがとうございます!
Two-factor Authenticationの"How does it work for command-line Git?"に説明があります。
GitHubのapplication settingsの"Personal access tokens"で"Generate new token"ボタンを押して作成します。
Token descriptionには"git @MacBook Pro"のような名前を入れました。scopeはデフォルトのまま(repo, public_repo, user, gist)にしました。
アクセストークンは使用するマシンごとに作成することにした
アクセストークンは作成直後はGitHubの設定画面で確認できますが、その後は表示できなくなります。gitのコマンドラインにパスワードを聞かれた時にコピペするのですが、別のマシンで設定するときには確認できないわけです。
ということで、マシンごとにアクセストークンを作成することにしました。そうすればマシンが盗難にあったときも対応するトークンだけ無効にすれば良いという利点もあります。
CIサービスとかからアクセスさせるときもSSH鍵ではなくアクセストークンを使うと良さそうです。まあ、鍵もCIサービスからのアクセス専用に作って登録しておけば同じという話はありますが。
何かの都合で再度アクセストークンを入力する必要があるときはトークン再生成で対応
GitHubのapplication settingsの"Personal access tokens"で"Edit"ボタンを押して編集画面に入り、"Regenerate token"ボタンで再生成します。
登録されたキーチェーンのエントリを確認
[アプリケーション]/[ユーティリティ]/[キーチェーン]で起動して、右上の検索フォームにgitと入力すると、以下のようなエントリが作成されていました。
- 名前: github.com
- 種類: インターネットパスワード
- キーチェーン: ログイン
sshのパスフレーズのキーチェーンエントリと~/.ssh/configの設定を削除
sshのパスフレーズのキーチェーンエントリはもう不要なので削除します。
- 名前: SSH: /Users/hnakamur/.ssh/id_rsa_hnakamur_github
- 種類: アプリケーションパスワード
- キーチェーン: ログイン
~/.ssh/configの以下の設定も消しました。
host github.com
User git
Hostname github.com
IdentityFile ~/.ssh/id_rsa_hnakamur_github