# SSHエージェント

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FUxR1rE5xtqY4izASBH84%2Fimage.png?alt=media&#x26;token=8242edb8-254a-4311-9900-d13835a7ad7a" alt=""><figcaption></figcaption></figure>

## 概要 <a href="#overview" id="overview"></a>

Keeperデスクトップアプリケーションには、SSHエージェント機能が組み込まれており、SSHキーと接続の管理でのセキュリティと利便性が高まります。この機能により、対象システムへの安全なアクセスが簡素化され、SSHキーをローカルに保存する必要がなくなります。また、Keeperの強力なキー管理機能およびローテーション機能とのシームレスな連携も可能です。このSSHエージェント機能は、すべてのKeeperユーザーにご利用いただけます。

KeeperデスクトップとSSHエージェントはすべてのプラットフォームでご利用いただけます。

* Windows
* macOS
* Linux

## 主な特徴 <a href="#key-features" id="key-features"></a>

* **組み込み SSH エージェント**\
  すべての秘密鍵がKeeperデスクトップアプリに自動的に組み込まれるため、サードパーティのSSHエージェントは不要になります。
* **ローカルキー ストレージなし**\
  SSHキーは Keeperで安全に保存および管理されるため、ローカルマシンでキーが漏洩するリスクはありません。
* **シームレスな認証**\
  Keeperボルトがロック解除されている際に、対象システムへのSSHアクセスを安全に認証します。
* **ローカルおよびリモート使用**

  KeeperPAM[トンネル](https://docs.keeper.io/jp/keeperpam/privileged-access-manager/tunnels)経由の管理対象システムに加えて、直接接続可能なターゲットへのSSH接続もサポートします。
* **Git統合**\
  GithubおよびGitlabで認証し、ワークステーションにローカルに秘密鍵を保存せずにGitコミットに署名します。
* **暗号化されたキー**\
  Keeperに保存されているSSH秘密鍵はパスフレーズで暗号化できるため、保護層がさらに強化されます。さらに、レコードの **\[パスワード]** フィールドをパスフレーズとして使用することで、セキュリティと利便性の両立を実現します。
* **キーローテーション**\
  Keeperの自動SSHキーローテーションによりSSHエージェントと連携し、常に最新のキーを使用できるようにします。

## ダウンロード <a href="#downloads" id="downloads"></a>

Keeperデスクトップアプリケーションは、こちらの[ダウンロード ページ](https://www.keepersecurity.com/download.html)から入手できます。

## キーをKeeperに保存する <a href="#storing-keys-in-keeper" id="storing-keys-in-keeper"></a>

Keeperボルトでは、SSH秘密キー以下の2つの方法で保存できます。

* カスタムフィールドとして追加
* ファイルとして添付

<div><figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FuBSq1wVNfCheLep3TKik%2Fimage.png?alt=media&#x26;token=b3808076-d982-46fa-96bb-2b8badc8c71c" alt=""><figcaption><p>カスタムフィールドの例</p></figcaption></figure> <figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FQAVs7tJwXmvfsuyYH6is%2Fimage.png?alt=media&#x26;token=f602de96-fd58-4f0a-9714-26208e1717af" alt=""><figcaption><p>添付ファイルの例</p></figcaption></figure></div>

どちらの場合でも、パスワードがレコードパスワードフィールドに保存されている限り、パスワードで保護されたキーがサポートされます。

#### PEM (プライバシー強化メール)

秘密キーに使用されるBase64エンコード形式。OpenSSLおよび旧バージョンのOpenSSHでよく使用されます。

```
-----BEGIN RSA PRIVATE KEY-----
(Base64-encoded data)
-----END RSA PRIVATE KEY-----
```

#### オープンSSH

OpenSSHの最新バージョン (7.8以降) において、`ssh-keygen`ユーティリティによって生成されるキーのデフォルト形式。秘密キーにはカスタムシリアル化形式が使用されます。

```
-----BEGIN OPENSSH PRIVATE KEY-----
(Base64-encoded data)
-----END OPENSSH PRIVATE KEY-----
```

#### PKCS#8

複数のキータイプをサポートする秘密キーをエンコードするための標準化されたフォーマット。OpenSSLや相互運用性のためによく使用されます。

```
-----BEGIN PRIVATE KEY-----
(Base64-encoded data)
-----END PRIVATE KEY-----
```

## SSHエージェントの利点 <a href="#benefits-of-ssh-agent" id="benefits-of-ssh-agent"></a>

Keeperアプリケーションに組み込まれたSSHエージェントにより、Keeperに安全に保存されたキーをパソコンで使用できるようになります。

SSHプロトコルでは、エージェントに読み込まれているすべての鍵を順に試行し、サーバー側と一致する鍵を見つけることで認証が行われます。しかし、OpenSSHでは1回の認証試行でエージェントが使用できる鍵の数に制限があり、通常は**6つ**までとなっています。この制限はSSH構成における`MaxAuthTries`パラメータによって定義されており、Keeper側で直接制御することはできません。

この制限に対応するために、Keeperでは鍵の使用を最適化するための機能を強化しています。たとえば、特定のリソースに関連付けられたトンネルを起動すると、そのトンネル用の鍵がエージェントによって即座に有効化されるようになっています。もしアクティブな鍵の最大数に達している場合でも、関連する鍵をエージェントのリストの先頭に移動させ、接続時に確実にその鍵が使用されるように優先順位を調整します。

## SSHエージェントの有効化 <a href="#activating-the-ssh-agent" id="activating-the-ssh-agent"></a>

Keeperデスクトップアプリケーションから、**\[設定]** > **\[開発者]** 画面にアクセスし、この画面からSSHエージェントを管理します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Frrc8AtHOk7KOCNk48IWX%2Fimage.png?alt=media&#x26;token=11337197-1ca4-4959-8d5e-9754e170d348" alt=""><figcaption><p>開発者設定</p></figcaption></figure>

SSHエージェントを有効にすると、ボルトがロック解除されている間、Keeperに保存されている指定されたすべてのSSHキーがローカルマシン上で使用可能になります。

毎回のログイン時にSSHエージェントを自動的に起動させるには、**\[起動時にSSHエージェントを起動する]** を選択します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FN9tooFSY9R0vlbW5wGSx%2Fimage.png?alt=media&#x26;token=f36f425a-77fd-4dae-930e-fe90d3b2f412" alt=""><figcaption><p>SSHエージェント設定</p></figcaption></figure>

特定のキーで SSHエージェントを有効にするには、ドロップダウンからキーを選択します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FrWQx6KJ9eBzgp6DYs0XA%2Fimage.png?alt=media&#x26;token=ba07c367-3e65-4c4a-84f0-b93611cbab28" alt=""><figcaption><p>レコードへのSSHアクセスを制限する</p></figcaption></figure>

## ターミナルの構成

ローカルオペレーティングシステム (macOSおよびWindows) で作業するには、以下のガイドに従って、ターミナルでSSHエージェントを有効にします。KeeperのSSHエージェントを使用するようコンピュータに指示するために、環境変数を設定する必要があります。

* [ターミナルの構成](#tminaruno)

## SSHエージェントの使用 <a href="#using-ssh-agent" id="using-ssh-agent"></a>

最もシンプルな使用例では、SSH鍵をKeeperに保存します。パソコン上でSSHクライアントを使用し、秘密キーを必要とする操作を行う際、KeeperのSSHエージェント (Keeperデスクトップアプリケーションに統合されている) が起動し、ボルトがロック解除されている場合に、ユーザーにリクエストの承認を促します。

## GitでSSHエージェントを使用する <a href="#using-ssh-agent-with-git" id="using-ssh-agent-with-git"></a>

KeeperのSSHエージェントを使うと、GitHubなどのサービスへの認証やGitコミットへの署名を、安全かつスムーズに行えます。GitHubとの連携や署名の設定方法については、以下のページをご参照ください。

* [Gitとの統合](https://docs.keeper.io/jp/keeperpam/privileged-access-manager/ssh-agent/integration-with-git)

## トンネルでSSHエージェントを使用する <a href="#using-ssh-agent-with-tunnels" id="using-ssh-agent-with-tunnels"></a>

ゼロトラスト構成でターゲットリソースを経由して[トンネル](https://docs.keeper.io/jp/keeperpam/privileged-access-manager/tunnels)接続を行う場合、KeeperのSSHエージェントが自動的にセッションを認証します。

PAMリソースでトンネルが有効化されると、トンネル情報の下にSSHコマンドが表示されます。

Keeper SSHエージェントがまだ有効化されていない場合は、**\[SSHコマンド (?)]** ヘルプをクリックすると、SSHエージェントの設定画面を開くためのリンクが表示されます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F4tDjopaT5wnINkDR2Jma%2Fimage.png?alt=media&#x26;token=ca9abdf8-c623-4f6f-a6c8-b6d85c389431" alt=""><figcaption><p>トンネル付きSSHエージェント</p></figcaption></figure>

ローカルターミナルから、SSHコマンドを貼り付けます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F5YrepxEDLnU3vOA4hYdp%2Fimage.png?alt=media&#x26;token=5dca7eb0-ae94-41bd-b82d-67eb37828644" alt=""><figcaption><p>SSHコマンド</p></figcaption></figure>

パソコン上で、Keeperデスクトップの認証リクエストが起動します。リクエストには、要求されているキーが含まれています。リクエストを承認するには、**\[承認する]** をクリックします。今後同じキーに対するリクエストを自動的に承認したい場合は、**\[二度と表示しない]** を選択してください。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FeRPVClGmG96amdM7JdoC%2Fimage.png?alt=media&#x26;token=b6c4ea83-819b-402f-b691-581834340978" alt=""><figcaption><p>SSHエージェント認証ダイアログ</p></figcaption></figure>

アクセスが許可されると、暗号化されたKeeperトンネルを介して、対象システムへのSSH接続が即座に確立されます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FRyBexaDIxtPbki5nnQwl%2Fimage.png?alt=media&#x26;token=7084ad97-bab9-4e66-b734-d4386c2b9e9b" alt=""><figcaption><p>SSHエージェントで確立されたトンネル</p></figcaption></figure>

## ターミナルの構成 <a href="#terminal-configuration" id="terminal-configuration"></a>

Keeper SSHエージェントを使用するには、以下のコマンドをシェルのスタートアップファイルに貼り付けます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F9Xr9SffkUD4Ycp9tjCDD%2Fimage.png?alt=media&#x26;token=033b4680-5154-44a0-9f0e-997bc139aa6b" alt=""><figcaption><p>ターミナルセットアップコマンド</p></figcaption></figure>

例

```sh
export SSH_AUTH_SOCK='/path/to/keeper-ssh-agent.sock'
```

### macOS (zsh) <a href="#macos-zsh" id="macos-zsh"></a>

* `~/.zshrc`ファイルを編集
* 変更を適用: `source ~/.zshrc`

### Linux & Ubuntu (bash) <a href="#linux-and-ubuntu-bash" id="linux-and-ubuntu-bash"></a>

* `~/.bashrc`ファイルを編集
* 変更を適用: `source ~/.bashrc`

### fish Shell <a href="#fish-shell" id="fish-shell"></a>

* `~/.config/fish/config.fish`ファイルを編集
* 以下の行を追加して保存します。

```sh
set -x SSH_AUTH_SOCK /path/to/keeper-ssh-agent.sock
```

* 変更を適用

```sh
source ~/.config/fish/config.fish
```

### 構成を確認 <a href="#verify-the-configuration" id="verify-the-configuration"></a>

```sh
echo $SSH_AUTH_SOCK
```

`/path/to/keeper-ssh-agent.sock`が表示されます。

有効にするには、新しいシェルを開かなければならない場合があります。

## SSHキーのローテーション <a href="#rotation-of-ssh-keys" id="rotation-of-ssh-keys"></a>

オンデマンドで、またはスケジュールに基づいてSSHキーを自動的にローテーションします。

* [パスワードローテーション](https://docs.keeper.io/jp/keeperpam/privileged-access-manager/password-rotation)のセクションと[Linuxユーザー](https://docs.keeper.io/jp/keeperpam/privileged-access-manager/password-rotation/rotation-use-cases/local-network/linux-user)SSHキーの使用例をご参照ください。
