[1Password]管理しているSSHの秘密鍵の情報をopコマンドで確認

2023.01.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • t_o_dと申します。
  • パスワードマネージャーとして1Passwordを利用していて、日常的なものからSSHキーの管理も行なっております。
  • 普段はGUIツールやChrome拡張で利用していますが、CLIツール(opコマンド)もありターミナルやスクリプトで参照や取得を行いたい時に便利です。
  • 今回は1Passwordの管理しているSSH秘密鍵情報をopコマンドで確認する方法を記録いたします。

環境

  • mac OS Ventura 13.1
  • 1Password for Mac 8.9.13
  • op 2.13.1
  • jq 1.6

結論

  • 以下をターミナルに入力して実行すれば、Privateで管理しているSSHの秘密鍵の情報をopコマンドで確認することができます。
op item list --vault Private --format json |
jq '.[] | select(.category=="SSH_KEY")' |
op item get - --format json |
jq '.fields[] | select(.label=="秘密鍵")'

内容

  • 上記のコマンドは以下2つのopコマンドで用意されているサブコマンドを利用しています。
    • item list : 登録アイテムの一覧。
    • item get : 指定のアイテムの詳細。
  • まずlistサブコマンドを利用して1Passwordに登録されているアイテムの一覧情報を取得します。
  • その際に「Privateのみの取得」「完全な情報の取得」を行いたかったので、以下のオプションを利用しました。
    • --vault vault名 : vault名の指定。
    • --format json : json形式かつ詳細な情報での出力。
  • 次にカテゴリがSSHのものに絞りたかったので、jqを利用してリスト情報内のcategoryフィールドをSSH_KEYでフィルタリングしました。
    • ※listサブコマンドにcategoriesオプションが存在しますがSSH_KEYでは上手く取得できませんでした。
  • 次にgetサブコマンドを利用して各アイテムの詳細情報を取得します。
  • getには「アイテム名」や「アイテムID」でも渡せますが、-とすることでオブジェクト自体を標準入力で渡すことが可能です。
  • その際も「詳細かつ扱いやすい形式での取得」を行いたかったので、--format jsonオプションを利用しました。
  • 最後に秘密鍵の情報に絞りたかったので、jqを利用して情報内のlabelフィールドを秘密鍵でフィルタリングしました。

まとめ

  • 1PasswordでSSHの管理が行えるようになって非常に便利な日々ですが、更にopコマンドを利用すれば「管理情報の参照」や「スクリプトでの活用」に活かせると感じました。

参考

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。