SSHの秘密鍵、どこに置いていますか。
僕はずっと ~/.ssh/ の中に、ファイルとしてそのまま置いていました。
案件が増えるたびに、鍵ファイルも一つ、また一つと増えていく。バックアップはどうしよう、新しいMacに移すときはどうしよう。なんとなく気持ち悪いなあと思いながら、ずっと見て見ぬふりをしていました。
そんな話をClaudeとしていたら、教えてもらったんです。
1Passwordに秘密鍵を保存したまま、SSH接続に使える。
知らなかった…!
これは、素晴らしい。便利です。
結論から言うと、設定は10分ほどで終わって、いまは ssh myserver と打つだけでサーバーにつながるようになりました。その手順を、うちの場合ということで書いておきます。
何が嬉しいのか
いちばん大きいのは、秘密鍵のファイルがMacの中に存在しなくなること。
- 鍵の実体は1Passwordの金庫の中
- 接続のたびに1Passwordが認証を代行してくれる
- 承認はTouch IDでポチッと
- 新しいMacでも、1Passwordにサインインすれば同じ鍵がすぐ使える
鍵ファイルをUSBメモリでコピーする、みたいな作業から解放されます。
しかも接続しようとした瞬間に「この鍵を使っていいですか?」と1Password側で確認が入るので、知らないうちに勝手に使われることもありません。
ここがじわーっと効いてくる安心感でした。
仕組みは「SSHエージェントの肩代わり」
「SSHエージェント」という仕組みを、1Passwordが肩代わりしてくれます。
SSHが「この鍵で認証したいんだけど」とお願いすると、1Passwordが金庫の中の秘密鍵で処理して、結果だけを返す。秘密鍵そのものは金庫から一歩も出ません。
これがわかると、このあとの設定の意味もすっきり入ってきます。
設定手順
1. 1Password側でSSHエージェントをオンにする
1Passwordアプリの設定 → 開発者 → SSHエージェントを使用をオンにします。
2. SSHキーを1Passwordに保存する
新規アイテムで「SSHキー」を選び、その場で生成するか、手持ちの秘密鍵を読み込みます。
アイテム名はわかりやすいものを。僕は案件名を入れた名前にしました。あとから見返したときに、どのサーバーの鍵か一目でわかるので。
3. 公開鍵だけファイルに保存する
ここがポイント。
秘密鍵は1Passwordの中に置いたまま。ファイルに出すのは公開鍵だけです。
なぜ必要かというと、SSH側に「今回はこの鍵を使ってね」と指定するための目印がいるから。公開鍵はその名のとおり、公開されても問題ないものなので、ファイルに置いて大丈夫です。
1Passwordのアイテムから「公開鍵」をコピーして、ターミナルで、
pbpaste > ~/.ssh/example_key.pub
pbpaste はmacOS標準のコマンドで、クリップボードの中身を出力するもの。> でそれをファイルに書き込んでいます。エディタを開いて貼り付けて保存、と同じことを1行でやっているだけです。
確認は、
cat ~/.ssh/example_key.pub
ssh-ed25519 AAAA… のような1行が表示されればOK。
4. ~/.ssh/config に書く
Host myserver
HostName sv0000.example.jp
User exampleuser
Port 10022
IdentityFile ~/.ssh/example_key.pub
IdentitiesOnly yes
Host *
IdentityAgent “~/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock”
HostName User Port は、契約しているサーバーの管理画面に載っている値に置き換えます。
IdentityAgent の長いパスが1Passwordのエージェント。ダブルクォートは必須です。パスに空白が入っているので、これを外すと動きません。ここでちょっとハマりました。
この Host * の部分は一度書けば全部のホストに効くので、次の案件からは上半分を追加するだけで済みます。ここが地味にありがたい。
5. 接続する
ssh myserver
1Passwordの確認ダイアログが出て、Touch IDで承認。つながりました。
長いホスト名もポート番号も、もう打たなくていい。これだけでも快適です。
ひとつだけ注意。自動処理には向かない
気をつけたいことが、ひとつ。
1Passwordがロックされていると、この方法は使えません。
自分で操作する接続なら問題ないのですが、深夜に自動実行されるバックアップやデプロイのスクリプトだと、ロック状態で止まってしまいます。
- 自分で操作する接続 → 1Password
- 無人で動く自動処理 → 従来どおりの鍵ファイル
と使い分けるのがよさそうです。うちはこの線引きにしました。
まとめ
秘密鍵をファイルとして持たなくていい。
この安心感が、想像以上に大きいです。案件ごとに鍵が増えても、全部1Passwordの中で整理されている状態になりました。モヤモヤしていたものが、すっと消えた感じ。
そして ~/.ssh/config に書いておけば、ssh myserver だけで接続できる。この身軽さも気持ちいい。
設定は10分もかかりません。SSHを使う機会がある方は、ぜひ試してみてください。
こういう「知らなかっただけで、ずっと便利になること」が、まだまだ埋まっているんだろうなあと思います。
聞いてみるものですね。
※リンクはAmazonアソシエイト・プログラムを利用しています






