メインコンテンツへスキップ

1PasswordのSSHエージェントで複数のVault(保管庫)を使い分ける

·1008 文字·3 分
称徳寺 涼雨
著者
称徳寺 涼雨
プリズムスタァ

1PasswordでSSH鍵を管理できるようになってから、ずっと「そのうちやろう」と思っていたSSH鍵の一元管理をやったが割と躓いたのでそれのログを残す。
GitHubとGitLabのSSH鍵を1Passwordで管理し、それぞれ異なるVault(保管庫)から読み込む方法になる。

今回実現したいこと
#

  1. SSH鍵を1Passwordで一元管理

    • セキュリティの向上
    • 複数デバイス間での同期
  2. 用途別の鍵管理

    • GitHub
      • SSHはPersonal Vaultに保存
    • GitLab
      • SSHはWork Vaultに保存
  3. 環境

    • macOS(今回の設定対象)
      • Windowsはそのうちやる

問題の発見
#

適当に検索するなりすれば方法SSH接続のやり方自体はいくつも出てくるのでGitHubへの接続は問題なく成功したのですが、GitLabへの接続で躓きました。

デバッグで見えてきた問題
#

SSH接続のデバッグ情報を確認してみると…

% ssh -vT git@gitlab.com 2>&1 | grep "Will attempt"
debug1: Will attempt key: GitHub ED25519 SHA256:******** agent
debug1: Will attempt key: /Users/******/.ssh/id_rsa
# 以下、デフォルトの鍵パスが続く...

GitLabの鍵が読み込まれていない!
どうやら1PasswordのSSHエージェントは、デフォルトでは一部のVaultしか読み込まないようでした。

解決方法
#

~/.config/1Password/ssh/agent.tomlの設定が必要。

修正前の設定
#

[[ssh-keys]]
vault = "Personal"

修正後の設定
#

[[ssh-keys]]
vault = "Personal"

[[ssh-keys]]
vault = "Work"

設定の確認
#

設定変更後、再度デバッグ情報を確認。

% ssh -vT git@gitlab.com 2>&1 | grep "Will attempt"
debug1: Will attempt key: GitHub ED25519 SHA256:******** agent
debug1: Will attempt key: GitLab ED25519 SHA256:******** agent  # GitLabの鍵が表示された!
# 以下省略

接続テストもしてみる。

% ssh -T git@gitlab.com
Welcome to GitLab, @********!

成功!

最終的なSSH設定
#

~/.ssh/config は最終的にこのような形となった。

# Orbstack関連の設定
Include ~/.orbstack/ssh/config

# 1Password関連の設定
Include ~/.ssh/1Password/config

# GitLab用エイリアス設定(元々使ってた設定の一部を残してる)
Host gitlab_company gitlab_company.com
  HostName gitlab.com

# 1PasswordのSSHエージェントを使用
Host *
  IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"

まとめ
#

  1. 1PasswordのSSHエージェントは明示的な設定が必要

    • デフォルトではすべてのVaultを自動読み込みしない
    • agent.tomlで使用するVaultを指定する必要がある
  2. デバッグの重要性

    • ssh -vT コマンドで詳細な接続情報を確認
    • 問題の原因を特定

あとはWindows環境で利用できれば…ということなのですが、今手元に無いのでそのうち対応する。

参考リンク
#