eaglesakuraの技術ブログ

技術的な話題とか、メモとか。

複数のgit秘密鍵を1passwordを経由して切り替える

なぜ必要なのか

  • Githubアカウントを複数所有している
    • 個人で使用しているアカウント
    • 本業用アカウント
    • 副業用アカウント×複数
  • 案件ごとに適切なアカウントを使用して作業を行わなければならない

1passwordでの設定

  • 公式の案内に従って1passwordをセットアップ
  • 次のコマンドを使用して1passwordの認証画面が起動すればOK
ssh -T git@github.com

開発者向けSSH キー | 1Password

アカウントごとにssh-keyを生成/登録する

  • 1passwordで 新規アイテム > sshキー で生成できる
  • Githubのアカウントごとに生成して登録する
    • Auth/Sign両方に登録が必要

異なるVault(保管庫)に切り分けている場合

  • agent.tomlを開く(SSHキーの設定から開ける)
  • Vaultの名称を登録する
[[ssh-keys]]
vault = "プライベート"

[[ssh-keys]]
vault = "Hoge企業用アカウント"

cloneしたディレクトリごとにconfigを切り替える

  • 任意のディレクトリ配下に .gitconfig を配置し、上書きするconfigを設定する
[user]
    name = eaglesakura-override
    email = example@example.com
   signingkey = 署名用のキーの公開鍵
  • ~/.gitconfig に追記
[includeIf "gitdir:path/to/directory/"]
    path = path/to/directory/.gitconfig

github.com内で複数アカウントを切り替える

  • enterpriseではなく、普通にgithub.comアカウント複数を適宜切り替える場合
  • これをアカウント数だけ追加する
Host example-account.github.com
  HostName github.com
  IdentityFile ~/.ssh/example-account.pub
  • IdentityFileは公開鍵だけexportして書き込めば良い
  • permission 600にする
  • cloneするときにホスト名を example-account.github.com に書き換えればOK

完了