はじめに
1PasswordのSSHエージェント機能により、GitHubのSSHキー管理ができるようになりました。
かなり便利なため最近使い始めたのですが、仕事用/プライベート用といった複数のGitHubアカウントを利用する場合の設定方法に少しつまづいたため、設定手順を備忘録として残しておきます。
- MacOS環境での設定手順
- 執筆時点(2022/5/1)では、1PasswordのSSHエージェント機能はベータ版のみの提供
1Passwordのインストール、単一アカウントのSSHキー設定手順
インストールと単一のGitHubアカウント(メインアカウント)使用時の設定は以下クラメソさんの記事がわかりやすいため、こちらを参考にしてもらえると良いと思います。
Github等で利用するSSH keyの作成及び管理を1Passwordで行う
今回はメインGitHubアカウントにSSHキーにGithub-main
を登録しました。
この状態でメインアカウントのリポジトリにGit操作(clone等)しようとすると、TouchID認証画面が表示されます。
先ほど作ったSSHキーGithub-main
を利用している事がわかります。
サブアカウントのSSHキー設定手順
ここからが本題です。
2個目のGitHubアカウント(サブアカウント) も利用する場合、サブアカウントのGitHub設定に新規のSSHキー(公開鍵)を登録する必要があります。
※ 登録するSSHキーは一意である必要があるため、メインアカウントに登録したキーをサブアカウントでも使い回すことはできません。
手順は以下です。
1. SSHキーの登録
ここは普通に1Passwordでキー新規作成し、登録してOKです。
↓GitHubのSSHキー登録画面
2. 認証失敗例
この状態でそのままサブアカウントのリポジトリをgit clone等すると、1PasswordはサブアカウントのキーGithub-sub
ではなく、最初に登録したメインアカウントのキーGithub-main
を使おうとしてしまい、当然認証エラーになります。
下記のようなエラーが出ます。
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
3. 回避方法
- 1Password管理のSSH公開鍵(サブアカウント用)をローカルにダウンロードします。ここが肝。
1PasswordのサブアカウントSSHキー画面で [public key] 右タブ → [Download] 押下
ローカルにダウンロードされたSSHキーを~/.ssh/
に移動し任意の名前で保存(今回はid_subgit.pub
)
$ mv ~/Downloads/id_ed25519.pub ~/.ssh/id_subgit.pub
あとは、1Passwordを使わない場合の複数Githubアカウント使用時と同じオペレーションです。
~/.ssh/config
にサブアカウント用ホストを追記します。
Host github.com.sub # ホスト名は末尾に「sub」つける等わかりやすく記述
HostName github.com
IdentityFile ~/.ssh/id_subgit.pub # 先ほどのキーを記述
IdentitiesOnly yes
User git
次に実際の操作時。
サブアカウントのリポジトリに対してGit操作したい場合は、ホスト名をgit@github.com
ではなく、上記で設定したホスト名にします。
今回は、git@github.com
の後に.sub
をつければOK。
$ git clone git@github.com.sub:<your_account_name>/<repository_name>.git
すると、今度はサブアカウント用のSSHキーGithub-sub
で1Passwordが認証してくれるようになりました!!
上記でcloneしたらあとはremote-urlのホスト名がサブアカウント用になっているため、こちらで意識せずとも1Passwordがサブアカウント用のSSHキーを使って認証してくれるようになります。(もちろん、デフォルトのホスト名でremote-url設定されている、メインアカウントのリポジトリに対してはメイン用のSSHキーGithub-main
を使ってくれます。)
もし、既存のローカルリポジトリにサブアカウント用SSHキー認証を反映させたい場合は、以下のようにリモートURL設定しなおせばOKです。
$ git remote set-url origin git@github.com.sub:<your_account_name>/<repository_name>.git
まとめ
- 複数Githubアカウントを利用する場合は、2個目以降のアカウント用SSH公開鍵はローカルに保存しておく必要がありConfig設定も必要なため、1PasswordによってローカルでのSSHキー管理から完全に解放されるわけでないです。
- それでも、キー全体は1Password側で保管されるため端末を変えても簡単にキーを引き継げることには変わりないし、秘密鍵はローカルに保存不要なためセキュリティ面ではより安全になったといえます。
- 1Password最高!!