【1Password移行⑦】SSH移行トラブルシュート──ハマりポイントまとめ
SSH移行をやってみて、いくつかハマりポイントがありました。
同じところで詰まる人がいるかもしれないのでまとめておきます。
目次
ハマり①:1Passwordポップアップが出ない
ssh -T git@github.com を実行しても1Passwordのポップアップが出ず、そのまま失敗するケースです。
原因:SSH agentのソケットが認識されていない
まずソケットファイルが存在するか確認します。
ls ~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sockファイルがない場合は、1Passwordデスクトップアプリが起動していないか、SSH agentの設定が有効になっていません。
アプリを再起動して「開発者」→「SSH Agent を使用」にチェックが入っているか確認してください。
~/.ssh/config の設定ミスの可能性もあります。
# 設定の確認
ssh -vT git@github.com 2>&1 | grep IdentityAgent出力に IdentityAgent の行が出ていない場合は、~/.ssh/config が読まれていないか、設定が間違っています。
ハマり②:元の鍵ファイルがまだ使われている
1Passwordポップアップが出ないのに接続が通っている、というケースです。
これは元の鍵ファイルがまだ ~/.ssh/ に残っていて、そちらが使われています。
元ファイルをリネームして確認します。
mv ~/.ssh/id_ed25519 ~/.ssh/id_ed25519.bak
ssh -T git@github.com
# 1Passwordポップアップが出て通ればOK
# 通らなければ1Passwordの設定に問題ありハマり③:git push のたびにポップアップが出る
移行直後は、git push のたびに1Passwordの確認ポップアップが出て少し煩わしかったです。
1Passwordアプリの設定で「認証を記憶する」期間を設定できます。
「開発者」→「SSH Agent」の設定から、認証のキャッシュ時間を変更できます。
「常に確認」が最も安全ですが、「Macのロック解除後X分間は確認しない」という設定にしておくと日常的な操作がスムーズになります。
自分は「Touch IDで認証、15分キャッシュ」で落ち着きました。
ハマり④:複数マシンでどうするか
会社のMacと自宅のMacなど、複数マシンを使っている場合の話です。
1Passwordは同じアカウントで複数デバイスにログインできるので、鍵は共有されます。
ただし「1Passwordに保存してある同じ鍵をすべてのマシンで使う」か「マシンごとに別の鍵を作る」かは設計の問題です。
自分が選んだのは 「GitHubなどの汎用鍵は1つ、サーバーごとに個別鍵」 という方針です。
- GitHub用鍵:1つの鍵を全マシンで共有(1Passwordで管理)
- 本番サーバー用鍵:サーバーごとに1つ(どのマシンからも同じ鍵で接続)
「マシンごとに別の鍵を作ってサーバーに複数の公開鍵を登録する」のは管理が大変になるのでやめました。
鍵の管理がしっかりできているなら(1Passwordに保存していれば十分)、1鍵を共有するのがシンプルです。
ハマり⑤:古い鍵(RSA)の扱い
id_rsa のような古いRSA鍵が残っていたんですが、もう使っていない鍵でした。
GitHubに登録されているか確認したら、3年前に登録したまま放置されていました。
こういう「使っているかどうか分からない鍵」は、いきなり削除しないで順番に対処します。
- 登録されているサービスを確認する(GitHubなら「Settings → SSH and GPG keys」)
- 使っているなら1Passwordに移行して新しい鍵として再登録する
- 使っていないなら各サービスから公開鍵を削除して、秘密鍵ファイルも削除する
使っていない鍵はこれを機に全部失効させてしまうのがすっきりします。
Series B まとめ
B-1〜B-4でSSH移行の流れをまとめました。
- B-1:棚卸しと全体像の把握
- B-2:SSH agentの有効化と1本目の移行
- B-3:残りの鍵の一括移行とファイル削除
- B-4:トラブルシュート(今回)
SSHキーが全部1Passwordに入ってしまえば、あとは意外と快適です。
Touch IDでSSH認証できるのが地味に便利で、パスフレーズを毎回打たなくて済むようになりました。
次の Series C では、SSHキー以外のシークレット(APIキー、環境変数、DBパスワード等)の移行をやっていきます。
今回は以上です!