アフィリエイト広告を利用しています

【SSH】秘密鍵を1Passwordに保存して ~/.ssh/config から呼び出せた!ファイルを持たなくていい安心感がすごい

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アソシエイト・プログラムを利用しています

この記事を書いた人

大東 信仁

カンパチが好きです。

プロフィールはこちら

10月14日開催 参加者募集中
(画像をタップ→詳細へ)

ミッションナビゲート モニター
(画像をタップ→詳細へ)

広告