Keeperを使ってSSH鍵管理！

# はじめに
職場でKeeperを使ってユーザ・パスワードの管理をしていますが、インフラ屋さんの私にはもう一つ管理しないといけないものがありました。
それは、**SSH鍵** です！！

私はMACとWindowsを使い分け業務をしている（インフラ屋さんとしてはWindowsの方が都合の良い時がある）ので、両方のPCのローカルにSSHの鍵ファイルを保存して業務をしていましたが、Keeperで鍵管理をすればわざわざ両方のPCに保存しなくて良いことに気づきました。

保存した鍵ファイルを使用してSSH接続を実施するには、**Keeper Commander CLI**を使用しますが、その方法も記載します。

# KeeperにSSH接続情報を保存する方法
まず下記の手順でKeeperにSSH接続情報を登録します。

1.Keeperにログインし、[新規作成]-[記録]をクリックします
2.新規記録モーダルが表示されるので、記録タイプを、「SSH 鍵」に変更し、タイトルを入力します
- タイトルには任意の値を入力し「次へ」をクリックします。（サーバー名を入れると分かりやすいです）
![Keeper®_パスワードマネージャー___デジタルボルト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2594248/a5076b26-6aad-5617-b955-8b6d0e2bb56c.png)

3.下記の画面の様に必要な項目を入力し、「保存」ボタンを押下します
- ログイン：SSHで接続するユーザ名を入力します
- 秘密鍵：サーバログイン時に使用する秘密鍵をテキストで入力します（秘密鍵はマスクされます）
- パスプレーズ：必要があれば入力します
- ホスト名またはIPアドレス：サーバのIPアドレスを入力します
- ポート：SSHで使用するポート番号を入力します
![Keeper®_パスワードマネージャー___デジタルボルト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2594248/f4be92ab-12c6-f52e-b870-b8f294ac7bb0.png)

以上

# Keeper Commander CLI でSSH接続する方法

## Commander CLIとは

> Keeper Commanderとは、KeeperのオープンソースコマンドラインCLI、スクリプティングツール、Python SDKインターフェースです。 
> ボルトや管理コンソール、Secrets Manager、Automatorやプラットフォーム、プラットフォームのその他の領域を含め、ほとんどのKeeperプラットフォームはこのツールから管理やスクリプトの記述、自動化を行うことができます。

https://docs.keeper.io/jp/v/enterprise-guide-jp/commander-cli

## Commander CLI インストール手順

1.Keeper Commander CLIのインストール
インストール手順は以下の公式ドキュメントでに記載されています

https://docs.keeper.io/jp/v/secrets-manager-jp/commander-cli/commander-installation-setup

* ```keeper version -v```でKeeper Commanderがインストールできたことを確認します

```
% keeper version -v
   Commander Version: 16.11.13 (Current version)
  API Client Version: c16.11.0
      Python Version: 3.11.9 (v3.11.9:de54cf5be3, Apr  2 2024, 07:12:50) [Clang 13.0.0 (clang-1300.0.29.30)]
    Operating System: macOS(23.6.0)
   Working directory: /Users/yourname
   Package directory: /usr/local/keepercommandercli/bin/_internal/keepercommander
        Config. File: /Users/yourname/.keeper/config.json
          Executable: /usr/local/keepercommandercli/bin/keeper-commander
Installation path: /usr/local/keepercommandercli/bin/_internal
```

2.```keeper shell``` コマンドを実行する

```
$ keeper shell

         /#############/   /#\
        /#############/   /###\      _    __  _______  _______  ______   _______  ______ (R)
       /#############/   /#####\    | |  / / |  ____/ |  ____/ |  ___ \ |  ____/ |  ___ \
      /######/           \######\   | | / /  | |____  | |____  | | __| || |____  | | __| |
     /######/             \######\  | |< <   |  ___/  |  ___/  | |/___/ |  ___/  | |/_  /
    /######/               \######\ | | \ \  | |_____ | |_____ | |      | |_____ | |  \ \
    \######\               /######/ |_|  \_\ |_______||_______||_|      |_______||_|   \_\
     \######\             /######/     ____                                          _
      \######\           /######/    /  ___|___  _ __ ___  _ __ ___   __ _ _ __   __| | ___ _ __
       \#############\   \#####/    /  /   / _ \| '_ ` _ \| '_ ` _ \ / _` | '_ \ / _` |/ _ \ '__|
        \#############\   \###/     \  \__| (_) | | | | | | | | | | | (_| | | | | (_| |  __/ |
         \#############\   \#/       \_____\___/|_| |_| |_|_| |_| |_|\__,_|_| |_|\__,_|\___|_|

                                                                                    v16.11.13

Use "server" command to change Keeper region > "server US"
        US: keepersecurity.com
        EU: keepersecurity.eu
        AU: keepersecurity.com.au
        CA: keepersecurity.ca
        JP: keepersecurity.jp
        GOV: govcloud.keepersecurity.us
To login type: login <email>
Not logged in> 
```

3.```login```と入力、その後keeperログイン時に使用しているメールアドレスを入力し、Keeper Commander CLIのログインする

```
Not logged in> login
...      User(Email): 【keeperログイン時に使用しているメールアドレスを入力】
Logging in to Keeper Commander
```

ログイン方法の選択が求められるので、自分の環境に応じた方法を選択してください
私のアカウントは2要素認証をしているので下記のようなログイン方法でした

* TOTPなので、Selection:に```1```を入力します

```
This account requires 2FA Authentication

  1. TOTP (Google and Microsoft Authenticator)
  q. Quit login attempt and return to Commander prompt
Selection: 1
```

* TOTPを入力します

```
2FA Code Duration: Require Every Login.
To change duration: 2fa_duration=login|12_hours|24_hours|30_days

Enter 2FA Code or Duration: 【TOTPを入力】
Successfully verified 2FA Code.
```

* keeperログイン時に使用しているパスワードを入力します

```
Enter password for XXX@XXX.XXX.XXX
Password:【keeperログイン時に使用しているパスワードを入力】
Successfully authenticated with Password
Syncing...
Decrypted [139] record(s)
My Vault> 
```

4.```ssh```コマンドを入力すると、現在keeperに登録されているSSH接続情報が表示される

```
My Vault> ssh
  #  Record UID              Type     Title                              Description                  Shared
---  ----------------------  -------  ---------------------------------  ---------------------------  --------
  1  VtC3eJbNgw6bF76D_LA72w  sshKeys  test-web-01                        user @ XXX.XXX.XXX.XXX:22    False
```

5.SSH接続をする
```ssh 【Record UID】```または、```ssh 【Title】```と入力すると該当サーバにログインできる

* Record UIDでSSHする場合
```
My Vault> ssh VtC3eJbNgw6bF76D_LA72w
Connecting to "test-web-01" ...

[user@test-web-01 ~]$
```

* TitleでSSHする場合

```
My Vault> ssh test-web-01
Connecting to "test-web-01" ...

[user@test-web-01 ~]$
```

以上

# 他社との比較
SSH鍵を管理するツールはいくつもありますが、個人的にKeeperが優れている点は**Commander CLI**の存在とその操作性だと思います。
CLIに苦手意識がある場合はなれるまで大変ですが、SSHログインが```ssh [サーバ名]```のコマンドだけで簡単にログインができるので、作業効率の向上につながっていると感じています。

# 終わりに
これで2つのPCのローカルに鍵ファイルを保存しないで、keeperに登録されたSSH接続情報を用い簡単にSSH接続することができました。

共有ユーザでSSH接続している職場であれば、SSH接続情報に共有権限を付与し、接続情報を共有して、鍵ファイルを全員のPCや共有フォルダ保存する必要が無くなり、セキュリティ面の心配の必要がなくなるのかなと思います。

本投稿が、少しでも皆さんの参考になれば幸いです。