# connectコマンド

{% hint style="warning" %}
connectコマンドは、コマンダーバージョン16.5.8以降で廃止されました。
{% endhint %}

{% hint style="success" %}
特権セッション、セッション記録、その他の高度な機能に対応した完全なリモート接続管理ツールをお探しでしたら、新製品の**Keeperコネクションマネージャー (KCM)** を推奨します。

KCMはエージェントレスのリモートデスクトップゲートウェイで、ウェブブラウザを使用して、RDP、SSH、データベース、Kubernetesエンドポイントに安全かつ簡単にアクセスできます。

詳細:

[**製品ホームページ**](https://www.keepersecurity.com/connection-manager.html)

[**製品資料**](https://app.gitbook.com/o/-LO5CAzoigGmCWBUbw9z/s/Z7s6LQJaKa1G17O787JG/)
{% endhint %}

## connectコマンド

`connect`コマンドを使用すると、Keeperボルトのレコードに保存されたコンテンツやメタデータを利用して、SSH、RDP、またはその他の種類の接続を確立できます。コマンドラインパラメータと環境変数は、カスタムフィールドとファイル添付を使用して指定できます。

`connect`コマンドは、名前が「`connect:`」で始まるレコードのカスタムフィールドを読み取ります。

### connectコマンド:

**コマンド:** `connect`

**詳細:** SSH、RDP、またはその他のプロトコルを使用して、サーバーに直接接続します。

**パラメータ:**

エンドポイント名またはエンドポイントへの完全なレコードのパス

**スイッチ:**

\--syntax-helpで、コマンドパラメータおよびテンプレートパラメータのヘルプを表示します。

-n、--new ユーザーごとのデータを要求

-s、--sort <{*endpoint, title, folder*}> ソートするフィールドを選択

-f、--filter <フィルタ条件> 出力をフィルタ

## **例**

### ゲートウェイ経由でサーバーにSSH接続

こちらの例は、SSHゲートウェイを介してサーバーに接続する方法となります。Keeperのレコードには、以下のカスタムフィールドが設定されています。

| **カスタムフィールド名**          | **カスタムフィールド値**                                                                                                     |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------ |
| connect:xxx:description | ゲートウェイ経由で本番サーバー                                                                                                    |
| connect:xxx             | ssh -o "ProxyCommand ssh -i ${file:gateway.pem} ec2-user\@gateway -W %h:%p" -i ${file:server.pem} ec2-user\@server |
| File Attachment         | gateway.pem                                                                                                        |
| File Attachment         | server.pem                                                                                                         |

`xxx`は、コマンドラインで接続する際に参照できる名前となります。

サーバーに接続するには、以下のコマンドを実行します。

```
My Vault> connect my_server
Connecting to my_server...

Last login:Sat Sep 28 00:25:34 2019 from 12.23.34.5
ec2-user@my_server:~$ 
ec2-user@my_server:~$ logout
Connection to my_server closed.
My Vault>                   
```

SSH秘密鍵がパスフレーズで暗号化されている場合は、毎回パスフレーズの入力を求められます。これを回避するには、次のセクションに記載のSSHエージェントバリエーションのご使用を推奨します。

### **SSHでSSHエージェントを使用**

ローカルSSHエージェントと連携してRSA秘密鍵を登録できます。これにより、リモートシステムに接続するたびにSSHパスフレーズを入力する必要がなくなります。コマンダーは、Mac OS/Linuxシステムでは、`SSH_AUTH_SOCK`環境変数を使用します。PowerShell OpenSSHの実装は、Windowsシステムでサポートされています。

ssh-agentと連携できるようにするには、POSIX互換システムで`SSH_AUTH_SOCK`環境変数が設定されていることを確かにします。Microsoft Windowsの場合は、`SSHエージェント`システムサービスが実行されていることを確かにします。Keeperの`connect`コマンドは、SSHエージェントを使用して、接続セッションで使用される秘密鍵を一時的に記憶します。セッションが切断されると、秘密鍵は削除されます。

SSHエージェントを使用してリモートシステムに接続するには、ボルトのレコードにカスタムフィールドを1つ追加します。

| **カスタムフィールド名**          | **カスタムフィールド値**     |
| ----------------------- | ------------------ |
| connect:xxx:ssh-key:yyy | ${zzz} ${password} |

SSH鍵がファイル添付に保存されている場合

| **カスタムフィールド名**          | **カスタムフィールド値**          |
| ----------------------- | ----------------------- |
| connect:xxx:ssh-key:yyy | ${body:zzz} ${password} |

SSH鍵タイプのレコードを参照する場合

| カスタムフィールド名              | カスタムフィールド値 |
| ----------------------- | ---------- |
| connect:xxx:ssh-key:yyy | <レコードUID>  |

ここで、`xxx`は接続名となります。`yyy`は、SSHエージェントで使用されるオプションで、鍵の名前です。`zzz`は、カスタムフィールドか添付ファイルのいずれかを参照します。

こちらの例では、最初のパラメータは秘密鍵を参照し、2番目のパラメータは秘密鍵の暗号化に使用されるパスフレーズを参照します。

`${password}`は、レコードのパスワードフィールドに格納されている値を参照します。

暗号化されたパスフレーズを使用してリモートシステムに接続するのは簡単です。以下の例では、「example2」というサーバーに接続します。

```
My Vault> connect example2
Connecting to example2...

Last login:Sat Sep 28 00:25:34 2019 from 12.23.34.5
craig@example2:~$ 
craig@example2:~$ logout
Connection to example2 closed.
My Vault>                                     
```

#### ssh-agentコマンド

ssh-agentコマンドを使用して、コマンダー内でsshエージェントを管理できます。

サブコマンド:

* start - sshエージェントを起動
* stop - sshエージェントを停止
* info - sshエージェントのステータスを表示
* log - sshエージェントのログを表示

### **リモートデスクトップ (RDP) ランチャーの例**

標準のMicrosoftリモートデスクトップアプリケーションを使用してリモートのWindowsサーバーにに接続するために、Keeperではシステムコールを使用して、pre-login、login、post-loginコマンドを実行します。こちらの例では、「pre-login」コマンドで現在のユーザーのWindows資格情報マネージャーにパスワードを一時的に保存します。「login」コマンドでRDPテンプレートファイルと保存されたクレデンシャルを使用して接続を開始します (RDPテンプレートファイルはオプションです)。セッションが終了すると、「post login」コマンドが実行され、資格情報マネージャーからパスワードが削除されます。

ボルトのレコードフィールド:

| **カスタムフィールド名**                | **カスタムフィールド値**                                                     |
| ----------------------------- | ------------------------------------------------------------------ |
| connect:rdp\_demo:description | デモサーバーへのリモート接続                                                     |
| connect:rdp\_demo:pre         | cmdkey /generic:12.34.56.78 /user:${login} /pass:${password} > NUL |
| connect:rdp\_demo             | mstsc ${file:Default.rdp}                                          |
| connect:rdp\_demo:post        | cmdkey /delete:12.34.56.78 > NUL                                   |
| File Attachment               | Default.rdp                                                        |

注: Default.rdpファイルは、適切に設定されたリモートデスクトップ接続から保存されます。

**サポートされているパラメータ置換**

以下に記載したパラメータ置換を使用して、コマンドをカスタマイズできます。

```
${user_email}:Keeperユーザーのメールアドレス 
${login}:レコードのログインフィールド
${password}:レコードのパスワードフィールド
${text:<name>}:ユーザーごとのカスタム変数、値の入力を求める、非共有 
${mask:<name>}:ユーザーごとのカスタム変数、値の入力を求める、非共有 
${file:<attachment_name>}:使用中は一時ファイルに保存、接続終了後に削除
${body:<attachment_name>}:添付ファイルのraw形式のコンテンツ。
```

**利用可能なすべての接続を一覧表示**

利用可能な接続のリストを取得するには、以下のように入力します。

```
My Vault> connect
```

**接続を開始**

コマンダーから (SSH/RDPの例を使用して) 接続を開始するには、以下のように入力します。

```
My Vault> connect my_server
```

または

```
My Vault> connect rdp_demo
```

または、対話型シェルを使用せず、以下のようにターミナルから接続を実行することもできます。

```
$ keeper connect my_server
```

備考

* ボルトの単一のレコードに任意の数の接続参照を格納したり、レコードごとに接続を分離したりできます。
* システムコマンドでユーザーの操作が必要な場合 (たとえば、SSH鍵ファイルにパスフレーズが含まれている場合)、コマンダーが入力を求めます。
* 他のKeeperボルトのレコードと同様に、接続のレコードはチーム間で共有したり、別のKeeperユーザーと共有したり、非公開にしたりすることができます。
