2児のパパ系Webエンジニア
の開発日記
A Dad-of-Two Engineer's Development Diary

SSH鍵を1Passwordに移したら、Macのgit pushがTouch IDだけになった話

SSH鍵を1Passwordに移したら、Macのgit pushがTouch IDだけになった話

🙌 結論から

SSHの秘密鍵を1Passwordに移したら、git push のたびに鍵のパスフレーズを打つことがなくなりました。

代わりに出てくるのはTouch IDの確認だけで、指を1回置けば終わりです🙌

設定は ~/.ssh/config に2行足すだけなので、思っていたよりずっと簡単でした!

ただ、1Passwordに鍵を7本以上入れたら、サーバーによっては Too many authentication failures で弾かれるようになったので、そこだけ少しハマりました(・_・;)

この記事では、私の設定・ハマった点の直し方・コミット署名・承認の単位の選び方までまとめます。

🤔 秘密鍵が~/.sshに置きっぱなしだった

もう当たり前感あるけど、SSHの鍵って作ったら ~/.ssh に置いたまま、という人が多いと思います。

私もそうでした(^_^)

GitHub用、会社のGitLab用、検証サーバー用、個人開発のVPS用…と増えていって、気づいたら ~/.ssh の中が鍵だらけになっていたんですよね。

しかも最近はClaude CodeやCodexにターミナルを任せる時間が長くて、ホームディレクトリにある秘密鍵を、エージェントが読める場所に置いておくのはちょっと気持ち悪いな・・・と感じるようになりました。

パスワードはもう1Passwordに入れているので、鍵も同じ場所にまとめちゃえ、というのがきっかけです💡

🔧 私の設定はこれ(3ステップ)

公式の手順どおりで、やることは3つだけです。

1. 1PasswordでSSHエージェントをオンにする

メニューバーの「1Password」→「Settings」→「Developer」を開いて、「Use the SSH Agent」にチェックを入れます。

あわせて「General」で「Keep 1Password in the menu bar」と「Start at login」もオンにしておくと、アプリのウィンドウを閉じてもエージェントが動き続けます👍

2. ~/.ssh/config にエージェントの場所を書く

Host *
  IdentityAgent "~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock"

パスが長くてスペースも入っているので、ダブルクォートで囲むのを忘れないようにしてください。

私は打ち間違いが怖かったので、公式にある方法でシンボリックリンクを作って短くしています。

mkdir -p ~/.1password && ln -s ~/Library/Group\ Containers/2BUA8C4S2C.com.1password/t/agent.sock ~/.1password/agent.sock

これで IdentityAgent ~/.1password/agent.sock と書けるようになります✨

3. つながるか試す

ssh -T git@github.com

Touch IDの確認が出て、指を置いたら Hi ユーザー名! が返ってくれば成功です😊

既存の鍵は、1Passwordの「SSH Key」アイテムに読み込ませるだけで移せました👍

移し終わったら、~/.ssh に残っている元の秘密鍵は消すかどこかへ退避しておかないと、移した意味が半分になるので注意です。

😭 鍵が7本でToo many authentication failuresになった

移してしばらくは快適だったんですが、ある日、検証サーバーにだけ入れなくなりました(´・ω・`)

出てきたのはこのエラーです。

Too many authentication failures

原因は、SSHエージェントの仕組みそのものでした。

エージェントは手持ちの公開鍵を1本ずつサーバーに出して、合うものを探します。

ところがOpenSSHのサーバーは、初期設定の MaxAuthTries が6回なので、7本目を出そうとした時点で切られてしまうんですよね( .. )

私は鍵を7本入れていたので、ちょうどこの条件に引っかかっていました…!

直し方は、ホストごとに使う鍵を決めてしまうことです。

1Passwordの鍵のアイテムで「Public key」の欄から公開鍵をダウンロードして、~/.ssh/config にこう書きます。

Host staging-server
  HostName 203.0.113.10
  User deploy
  IdentityFile ~/.ssh/staging.pub
  IdentitiesOnly yes

ポイントは、IdentityFile に書くのが公開鍵(.pub)だということです。

秘密鍵は1Passwordに入れたままで、「このホストにはこの鍵だけ出してね」とSSHに教えるイメージですね💡

IdentitiesOnly yes を付けないと、結局ほかの鍵も出してしまうので、ここはセットで書きます。

公式には ~/.config/1Password/ssh/agent.toml で、エージェントが出す鍵とその順番を決める方法もありますが、私はホストが少ないので ~/.ssh/config だけで足りました。

📝 コミット署名も1Passwordに任せた

鍵を移したついでに、Gitのコミット署名もSSH鍵でやるようにしました。

Git 2.34以降が必要なので、先に git --version で確認しておくと安心です🔧

私の ~/.gitconfig はこうなっています(鍵は自分の公開鍵に置き換えてください)。

[user]
  signingkey = ssh-ed25519 AAAA...(自分の公開鍵)

[commit]
  gpgsign = true

[gpg]
  format = ssh

[gpg "ssh"]
  program = /Applications/1Password.app/Contents/MacOS/op-ssh-sign

手で書くのが面倒なら、1Passwordで鍵を選んで「…」メニュー →「Configure Commit Signing」→「Edit Automatically」でも書き込んでくれます。

GitHubに登録するときは、「Key type」を Signing key にするのを忘れないでください。

ここを普通の認証用のまま登録すると、署名してもVerifiedが付きません(´・ω・`)

私も最初これでVerifiedが出なくて、しばらく設定を見直していました笑

🔒 承認の単位はタブごとにするか迷った

1Passwordは、どのアプリが鍵を使おうとしているかを見て、承認を求めてきます。

初期設定は「アプリごと」で、一度許可すると、そのアプリとそこから起動したプロセスは、1Passwordがロックされるか終了するまで聞かれません。

これだとGhosttyで1回許可すれば、別のタブも全部通ることになります🤔

設定の「Developer」→「Advanced」にある「Ask approval for each new」で、承認の単位をターミナルのセッション(タブ)ごとにも変えられます。

さらに9月8日の1Password for Mac 8.12.36からは、リクエストごとに毎回聞く設定も選べるようになりました👀

私はかなり迷ったんですが、今は「ターミナルのセッションごと」にしています。

エージェントに作業させているタブで勝手に git push されたら、そこで気づけるからです!

毎回聞くのはさすがに指が疲れそうなので、本番サーバーに入る日だけ切り替えるくらいがちょうどいいかも・・・!

ちなみに執筆時点の最新の安定版は、10月5日の8.12.40でした。

👀 こういう人には向かないかも

満足している前提ですが、合わない人もいると思います。

  • 1Passwordを契約していない方: 個人プランは2026年3月27日から年47.88ドルに値上がりしたと報じられています。SSHのためだけに契約するなら、macOS標準のキーチェーンにパスフレーズを覚えさせる UseKeychain yes で十分かもしれません
  • 1Passwordのアプリを常駐させたくない方: エージェントはアプリが動いていないと使えないので、メニューバーに置いておく前提になります
  • CIやサーバーの中で鍵を使いたい方: これは手元のMacで承認する仕組みなので、無人で動く環境には向きません

逆に、パスワードをすでに1Passwordで管理していて、鍵の置き場所を整理したい人にはかなり合うと思います🙌

🔗 関連記事と使い分け

  • Touch IDでsudoを通す記事: sudo はmacOSのPAMで、SSHとGitの鍵は1Passwordで、と担当を分けています。どちらも指1本で済むので、ターミナルでパスワードを打つことがほぼなくなりました
  • Ghosttyの記事: 今使っているターミナルです。承認をタブごとにしたのは、ここでClaude Codeを何本も回しているからです
  • brew bundleの記事: Macを入れ替えるときはBrewfileでアプリを戻して、鍵は1Passwordにサインインするだけ、という流れになりました

パパ系Webエンジニア〜愛用ガジェット一覧 🛍️

Macとあわせて使っている周辺機器を楽天ROOMにまとめています ✨ 在宅Macデスクの参考にどうぞ 🙌

👍 まとめ

1PasswordのSSHエージェントは、~/.ssh/config に2行足すだけで、鍵の置き場所とパスフレーズの手間をまとめて片付けてくれました。

鍵が7本を超えるならホストごとに IdentityFile と IdentitiesOnly yes を書く、ここだけ押さえれば大きくつまずくことはないと思います(`・ω・´)

これが良いのか悪いか・・・パスワードも鍵も全部1Passwordに寄せることになったけど、まあ便利だからいっか!という気持ちです(^^)

~/.ssh に秘密鍵が並んでいる人は、まず1本だけ移して ssh -T git@github.com を試してみてください✨


※ バージョン番号・料金・機能は今後も変わる可能性があります。最新情報は公式サイトをご確認ください👀

参考になったらシェアしてもらえるとうれしいです🙌

Xでポスト Threads はてブ LINE