LoginSignup
7
5

More than 1 year has passed since last update.

【備忘録】1Passwordでの複数Githubアカウント利用時のSSHキー管理方法

Posted at

はじめに

1PasswordのSSHエージェント機能により、GitHubのSSHキー管理ができるようになりました。
かなり便利なため最近使い始めたのですが、仕事用/プライベート用といった複数のGitHubアカウントを利用する場合の設定方法に少しつまづいたため、設定手順を備忘録として残しておきます。

  • MacOS環境での設定手順
  • 執筆時点(2022/5/1)では、1PasswordのSSHエージェント機能はベータ版のみの提供

1Passwordのインストール、単一アカウントのSSHキー設定手順

インストールと単一のGitHubアカウント(メインアカウント)使用時の設定は以下クラメソさんの記事がわかりやすいため、こちらを参考にしてもらえると良いと思います。
Github等で利用するSSH keyの作成及び管理を1Passwordで行う

今回はメインGitHubアカウントにSSHキーにGithub-mainを登録しました。
image.png

この状態でメインアカウントのリポジトリにGit操作(clone等)しようとすると、TouchID認証画面が表示されます。
先ほど作ったSSHキーGithub-mainを利用している事がわかります。
image.png

サブアカウントのSSHキー設定手順

ここからが本題です。
2個目のGitHubアカウント(サブアカウント) も利用する場合、サブアカウントのGitHub設定に新規のSSHキー(公開鍵)を登録する必要があります。
※ 登録するSSHキーは一意である必要があるため、メインアカウントに登録したキーをサブアカウントでも使い回すことはできません。

手順は以下です。

1. SSHキーの登録

ここは普通に1Passwordでキー新規作成し、登録してOKです。
↓GitHubのSSHキー登録画面
image.png

2. 認証失敗例

この状態でそのままサブアカウントのリポジトリをgit clone等すると、1PasswordはサブアカウントのキーGithub-subではなく、最初に登録したメインアカウントのキーGithub-mainを使おうとしてしまい、当然認証エラーになります。
image.png
下記のようなエラーが出ます。

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. 回避方法

  1. 1Password管理のSSH公開鍵(サブアカウント用)をローカルにダウンロードします。ここが肝。
    1PasswordのサブアカウントSSHキー画面で [public key] 右タブ → [Download] 押下
    image.png

ローカルにダウンロードされた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が認証してくれるようになりました!!

image.png

上記で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最高!!

参考

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5