1PasswordでSSH鍵を管理できるようになってから、ずっと「そのうちやろう」と思っていたSSH鍵の一元管理をやったが割と躓いたのでそれのログを残す。
GitHubとGitLabのSSH鍵を1Passwordで管理し、それぞれ異なるVault(保管庫)から読み込む方法になる。
今回実現したいこと #
-
SSH鍵を1Passwordで一元管理
- セキュリティの向上
- 複数デバイス間での同期
-
用途別の鍵管理
- GitHub
- SSHは
Personal Vaultに保存
- SSHは
- GitLab
- SSHは
Work Vaultに保存
- SSHは
- GitHub
-
環境
- macOS(今回の設定対象)
- Windowsはそのうちやる
- macOS(今回の設定対象)
問題の発見 #
適当に検索するなりすれば方法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"まとめ #
-
1PasswordのSSHエージェントは明示的な設定が必要
- デフォルトではすべてのVaultを自動読み込みしない
agent.tomlで使用するVaultを指定する必要がある
-
デバッグの重要性
ssh -vTコマンドで詳細な接続情報を確認- 問題の原因を特定
あとはWindows環境で利用できれば…ということなのですが、今手元に無いのでそのうち対応する。