# SSH接続

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

KeeperPAMは、SSHプロトコルを利用してターゲットインフラへのゼロトラスト特権セッション管理を実現します。本ページでは、Keeperボルト内のPAMマシンレコードに対してSSH接続を設定する方法をご紹介します。ボルトからKeeperゲートウェイを経由して、安全なSSHセッションが対象デバイスに直接確立されます。

## 要件 <a href="#prerequisites" id="prerequisites"></a>

まず、接続の「[はじめに](https://docs.keeper.io/jp/keeperpam/privileged-access-manager/connections/getting-started)」のページに記載されている要件をご確認ください。

本プロトコルを設定するには、以下のPAMレコードが必要となります。

<table><thead><tr><th width="198.12109375">PAMレコード</th><th>説明</th></tr></thead><tbody><tr><td><a href="../../getting-started/pam-configuration">PAM構成</a></td><td>対象のインフラに関する情報が含まれています。</td></tr><tr><td><a href="../../getting-started/pam-resources/pam-machine">PAMマシン</a>レコード</td><td>SSHプロトコル接続を確立したいエンドポイントに関する情報が含まれています。</td></tr><tr><td><a href="https://github.com/Keeper-Security/gitbook-jp-secrets-manager/blob/main/privileged-access-manager/getting-started/pam-resources/pam-user/README.md">PAMユーザー</a>レコード</td><td>エンドポイントに接続するために使用されるユーザー認証情報が含まれています。</td></tr></tbody></table>

本ガイドでは、LinuxサーバーをPAMマシンレコードの例として使用します。

## PAM設定 - SSHプロトコルの構成 <a href="#pam-settings-configuring-ssh-protocol" id="pam-settings-configuring-ssh-protocol"></a>

### 接続設定へのアクセス

対象のエンドポイントを使用してPAMレコードタイプ (PAMマシン、PAMデータベース、PAMディレクトリ) を作成した後、以下の手順でPAM設定画面の **\[接続]** セクションに移動します。

1. PAMレコードを編集します。
2. PAM設定セクション内の **\[セットアップ]** をクリックします。
3. 表示されたウィンドウで **\[接続]** セクションに移動します。

### 接続設定の構成 <a href="#configuring-connection-settings" id="configuring-connection-settings"></a>

PAM設定画面でSSHプロトコル設定を構成する前に、以下のフィールドを構成する必要があります (**必須**)。

<table><thead><tr><th width="255.5078125">フィールド</th><th>説明</th></tr></thead><tbody><tr><td>PAM構成</td><td>対象インフラの詳細を含み、PAMレコードで構成されている対象へのアクセスを提供します。</td></tr><tr><td>管理者認証情報レコード</td><td>リンクされた<a href="https://github.com/Keeper-Security/gitbook-jp-secrets-manager/blob/main/privileged-access-manager/getting-started/pam-resources/pam-user/README.md">PAMユーザー</a>で、対象への認証と管理操作を実行するために使用されます。</td></tr></tbody></table>

以下の表は、PAM設定でのSSHプロトコルに関する接続設定の一覧です。

<table><thead><tr><th width="256.2734375">フィールド</th><th>説明</th></tr></thead><tbody><tr><td>プロトコル</td><td><strong>必須</strong><br>レコードに設定するプロトコルです。選択したプロトコルに基づいて、プロトコル設定が自動的に反映されます。本ページでは、SSHプロトコルを選択してください。</td></tr><tr><td>接続を有効にする</td><td><strong>必須</strong><br>このレコードで接続を有効にするには、このトグルをオンにします。</td></tr><tr><td>セッション録画</td><td>有効にすると、このレコードに対してグラフィカルセッションの録画が有効になります。</td></tr><tr><td>テキストセッションレコーディング (Typescript)</td><td>有効にすると、このレコードに対してテキストセッションの記録 (Typescript) が有効になります。</td></tr><tr><td>キー入力イベントを含める</td><td>有効にすると、セッション再生時に個別のキー入力データが含まれるようになります。注: ユーザーが入力した機密情報も記録される可能性がありますのでごご留意ください。</td></tr><tr><td>接続ポート</td><td><p>選択したプロトコル接続を確立するために使用されるポートです。デフォルトでは、PAMマシンレコードで定義されたポート値が使用されます。ここでポートを指定すると、デフォルトのポートが上書きされます。</p><p>SSHの場合、デフォルトのポートは22です。</p></td></tr><tr><td>接続用認証情報</td><td>構成すると、接続の認証にこれらの認証情報が使用されます。詳しくは<a href="#starting-a-connection">こちら</a>を参照。</td></tr><tr><td>ボルトから認証情報を選択できるようにする</td><td>有効にすると、ユーザー自身の個人用認証情報を使用して接続を認証できるようになります。詳しくは<a href="#starting-a-connection">こちら</a>を参照。</td></tr><tr><td>セッション終了時に接続用認証情報をローテーションする</td><td>有効にすると、セッション終了時に、構成された接続用認証情報が自動的にローテーションされます。</td></tr><tr><td>パブリックホストキー (Base64)</td><td>SSHサーバーのknown hostsエントリです。OpenSSHの <code>known_hosts</code> ファイルで指定される形式と同じ形式で入力してください。指定がない場合、ホストの正当性は検証されません。</td></tr><tr><td>カラースキーマ</td><td><p>SSH接続で使用されるターミナルエミュレーターのカラースキームを指定します。各カラースキームでは、ターミナルのデフォルトの前景色と背景色が定義されます。テキストの出力時に色を指定するプログラムがある場合は、これらのデフォルトが上書きされます。指定可能な値は以下のとおりです。</p><ul><li>black on white: 白い背景に黒い文字</li><li>gray on black: 黒い背景に灰色の文字 (デフォルト)</li><li>green on black: 黒い背景に緑の文字</li><li>white on black: 黒い背景に白い文字</li><li>Custom: カスタムカラースキーマ</li></ul><p>デフォルト値はwhite-blackです。</p></td></tr><tr><td>フォントサイズ</td><td>ターミナルセッションで表示されるフォントサイズです。</td></tr><tr><td>フォント名</td><td>使用するフォント名を指定します。指定しない場合は、デフォルトの <code>monospace</code> が使用されます。このフォントは、<strong>guacd を実行しているサーバーにインストールされているフォント</strong>である必要があり、<strong>等幅フォント</strong>を指定してください。等幅でないフォントを使用すると、文字ごとの表示が正しく描画されない場合があります。</td></tr><tr><td>最大スクロールバックサイズ</td><td>ターミナルのスクロールバックバッファに保持できる最大行数を指定します。デフォルトでは、スクロールバックバッファは最大1000行に制限されています。</td></tr><tr><td>SFTP</td><td>有効にすると、ユーザーはターミナルセッションにファイルをドラッグ＆ドロップして、1つ以上のファイルを転送できます。</td></tr><tr><td>ファイルブラウザのルートディレクトリ</td><td>SFTPが有効になっている場合、ファイル転送は指定されたフォルダパスに保存されます。</td></tr><tr><td>クリップボードにコピー</td><td>有効にすると、接続されたプロトコルセッション内でコピーされたテキストはユーザーがアクセスできるようになります。</td></tr><tr><td>クリップボードから貼り付け</td><td>有効にすると、ユーザーは接続されたプロトコルセッション内でクリップボードからテキストを貼り付けることができます。</td></tr><tr><td>読み取り専用</td><td>この接続を読み取り専用にするかどうかを指定します。<code>true</code> に設定すると、接続では一切の入力を受け付けなくなります。ユーザーはターミナル (またはターミナル内で実行されているアプリケーション) を表示できますが、操作することはできません。</td></tr></tbody></table>

### セッション/環境のパラメータ

デフォルトでは、SSHセッションは対話型シェルとして開始されます。使用されるシェルはSSHサーバー側で決定され、通常は `chsh` で設定されたユーザーの既定シェル、または `/etc/passwd` に定義された内容が参照されます。この動作を上書きして、特定のコマンドを実行したい場合は、SSH接続の構成でそのコマンドを指定できます。

| フィールド          | 説明                                                                                                                                                                                                                   |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| コマンドを実行        | SSHセッションで実行するコマンドを指定します。指定しない場合は、ユーザーの既定シェルが使用されます。                                                                                                                                                                  |
| 言語／ロケール($LANG) | SSHセッションで使用するロケールを指定します。SSHサーバーの `LANG` 環境変数で受け付けられる値を指定できます。指定しない場合は、SSHサーバーの既定のロケールが使用されます。このパラメータは `LANG` 環境変数としてSSHサーバーに送信されるため、SSHサーバー側でクライアントからの `LANG` 設定を許可している場合にのみ有効です。                                    |
| タイムゾーン($TZ)    | SSHセッションで使用するタイムゾーンを指定します。SSHサーバーの `TZ` 環境変数で受け付けられる値を指定できます。通常はIANAタイムゾーンデータベースで定義されている標準名を使用します。指定しない場合は、SSHサーバーの既定のタイムゾーンが使用されます。このパラメータは `TZ` 環境変数としてSSHサーバーに送信されるため、SSHサーバー側でクライアントからの `TZ` 設定を許可している場合にのみ有効です。 |
| サーバーキープアライブ間隔  | SSHサーバーへキープアライブパケットを送信する間隔を秒単位で指定します。`0` を指定すると、キープアライブパケットは送信されません (デフォルトの動作)。指定できる最小値は `2` です。                                                                                                                     |

### ターミナル動作のパラメータ

多くの場合、Keeperコネクションマネージャーのターミナルエミュレーターは、デフォルトの動作のままで問題なく使用できます。ただし、特定のシステム (特にLinux以外のオペレーティングシステム) に接続する場合は、正しく動作させるためにターミナルの挙動を調整する必要があることがあります。KeeperのSSH対応では、バックスペースに送信される制御コードや、`TERM` 環境変数で通知されるターミナルタイプを制御するためのパラメータが用意されています。

| フィールド        | 説明                                                                                                                                                                    |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| バックスペース送信コード | バックスペースキーを押した際に送信される、ターミナル制御コードの数値を指定します。通常は変更する必要はありませんが、バックスペースを押しても文字が削除されず、`^?` や `^H` といった制御文字が表示される場合は、このパラメータを調整する必要があります。デフォルトでは、制御コード `127`(Delete) が送信されます。 |
| ターミナルタイプ     | SSHサーバーに渡されるターミナルタイプ文字列を指定します。この値は、SSHセッション内では `TERM` 環境変数として参照され、アプリケーションが送受信する制御文字に影響します。デフォルトでは、`linux` が使用されます。                                                   |

## 接続認証方式 <a href="#starting-a-connection" id="starting-a-connection"></a>

Keeperの接続は、以下のいずれかの方法で認証できます。

[**接続用認証情報**](#jie-xu-yong-ren-zheng-qing-bao)\
PAMマシン、PAMデータベース、またはPAMディレクトリのレコードタイプに直接設定された「接続用認証情報」を使用して、ターゲットへのセッションが認証されます。ユーザーは接続のためにこの認証情報にアクセスする必要はありません。

[**個人用認証情報**](#ge-ren-yong-ren-zheng-qing-bao)\
「ユーザーがボルトから認証情報を選択できるようにする」が有効な場合、ユーザーは自分のKeeperボルトに安全に保存されている個人あるいはプライベート認証情報を使って、ターゲットへのセッションを認証できます。

[**一時的アカウント**](#akaunto)\
PAMマシンまたはPAMデータベースのリソースで一時的アカウント機能が有効になっている場合、セッション専用の、システムが生成する時間制限付きの特権アカウントが作成されます。このアカウントはセッション終了後に自動的に削除され、常設の特権が排除されます。この方式は、対象のシステムに永続的なアカウントを残さず、ジャストインタイムアクセスを実現するために使用されます。

## 接続の開始 <a href="#starting-a-connection" id="starting-a-connection"></a>

PAMマシンレコードでSSHプロトコル接続の設定が完了すると、レコードに次のような接続バナーと **\[起動]** ボタンが表示されます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2Fagg2qXXxf2PtBR42FdYY%2Fimage.png?alt=media&#x26;token=4c2eb9cd-20bd-4486-9a31-3fa62f492cb6" alt="" width="392"><figcaption></figcaption></figure>

上の画像では、PAMマシンレコードにLinuxサーバーが設定されています。**\[起動]** をクリックすると、ボルトクライアントで指定された対象への接続プロトコルを使ってウィンドウが描画されます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FJeP0cjPyzJqW136ka51h%2Fimage.png?alt=media&#x26;token=5cf089f9-df4a-4310-b5ca-05e5e41573f1" alt=""><figcaption><p>SSHセッションの起動</p></figcaption></figure>

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FizMqZovyaCGF2Kbo4DTt%2Fimage.png?alt=media&#x26;token=58d4d4e6-f984-4721-bc81-2d580487fd5f" alt=""><figcaption><p>SSHセッションがアクティブ</p></figcaption></figure>

### ファイル転送 <a href="#file-transfers" id="file-transfers"></a>

受信

SFTP ファイル転送機能が有効になっている場合、ユーザーはファイルをターミナル セッションにドラッグ アンド ドロップして、ファイルをマシンに転送できます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F9Ua2HbjnH399bano6pGI%2Fimage.png?alt=media&#x26;token=ab17d114-6df6-438e-98ec-0904552bbdf6" alt=""><figcaption><p>SFTPファイル転送オプション</p></figcaption></figure>

ドラッグ＆ドロップを通じて複数のファイルを同時に転送できます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FKf2d6w9p8E7tl2WXJX8L%2Fimage.png?alt=media&#x26;token=074efb31-a49f-4afc-a8e3-075f75c6ee96" alt=""><figcaption></figcaption></figure>

ファイルがターゲットマシンにアップロードされている間、Keeperボルトのドックエリアにファイル転送のステータスが表示されます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FmVKdyzeDNL6ZfYIZHmQB%2Fimage.png?alt=media&#x26;token=92a33bef-aab2-43ae-addd-4530856ee7bb" alt=""><figcaption><p>ファイルのアップロードステータス</p></figcaption></figure>

#### 送信

SSHリモート接続からローカルファイルシステムにファイルを転送するには、リモートシステムに`guacctl`というツールをダウンロードして、アウトバウンド転送を実行するために使用できます。

`guacctl`をダウンロードして実行可能に設定します。

```
wget https://raw.githubusercontent.com/apache/guacamole-server/master/bin/guacctl
chmod +x guacctl
```

以下の構文を使用してファイルのダウンロードを開始します。

```
./guacctl -d <filename>
```

### Windows サーバーへの SSH <a href="#ssh-to-windows-servers" id="ssh-to-windows-servers"></a>

SSHプロトコルは、Windowsサーバーにアクセスして、PowerShellコマンドやその他の管理操作を実行するためにも使用できます。

* [WindowsでSSHを有効にする手順](https://docs.keeper.io/jp/keeperpam/privileged-access-manager/references/setting-up-ssh)

## セッションレコーディング - SSHプロトコル <a href="#session-recordings-ssh-protocol" id="session-recordings-ssh-protocol"></a>

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FTiCWo0MseNBd31usIL1E%2Fimage.png?alt=media&#x26;token=8e93c475-f7dd-4ba0-993b-07e8726d9f05" alt=""><figcaption><p>SSHセッションの録画</p></figcaption></figure>

このプロトコルでは、ターミナルセッションのグラフィカルな内容と、タイミング情報を含む完全な生のテキスト内容の両方が録画されます。詳しくは以下のページをご覧ください。

* [セッションのレコーディングと再生](https://docs.keeper.io/jp/keeperpam/privileged-access-manager/session-recording-and-playback)

## 接続テンプレート

対象のシステムに対応するPAMレコードタイプを接続テンプレートとして構成することもできます。これらのテンプレートは、特定のホスト名や認証情報を事前に定義することなく、対象のシステムへのセッションを開始するための再利用可能なレコードタイプとして機能します。詳細については[こちらのページ](https://github.com/Keeper-Security/gitbook-jp-secrets-manager/blob/main/privileged-access-manager/connections/tenpurto/README.md)をご覧ください。
