# Gitとの統合

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2F170eljwp24yAsdbJQtQ9%2Fimage.png?alt=media&#x26;token=4328b616-8f24-4655-8c24-63995659dc0f" alt=""><figcaption></figcaption></figure>

KeeperのSSHエージェントは、Gitとの認証およびコミット署名にシームレスに統合できます。秘密鍵をデバイス上に保存せず、Keeperボルト内で安全に管理することで、機密性の高い鍵のローカルでの漏洩を防ぎ、セキュリティを強化します。

本ページでは、GitHubで使用する認証用キーと署名用キーをそれぞれ作成・設定し、それらをすべてKeeperによって安全に管理する方法を取り扱います。認証と署名で異なる鍵を使用することで、役割を明確に分離し、セキュリティ体制をさらに強化できます。

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

* Keeperデスクトップで[SSHエージェント](/jp/keeperpam/privileged-access-manager/ssh-agent/integration-with-git.md)がアクティブになっていること
* [ターミナルの構成](/jp/keeperpam/privileged-access-manager/setup-steps.md)が行われていること

## 機能 <a href="#features" id="features"></a>

* [GitHub認証](#github-authentication)
* [コミットの署名](#signing-commits)

## GitHub認証 <a href="#github-authentication" id="github-authentication"></a>

以下はKeeperを使用してGitHubで認証する手順です。

{% stepper %}
{% step %}
**Keeperレコードを作成する**

* **SSHキー**タイプや**PAMユーザー**タイプなどのレコードを作成します。
* 強力なパスワードを生成します。
  {% endstep %}

{% step %}
**SSHキーを生成する**

以下のように、Keeperで生成したパスワードを使用して、ターミナルでSSHキーを生成します。

```
ssh-keygen -t ecdsa -b 521 -C "craig@keeperdemo.io"

Enter passphrase (empty for no passphrase): *********
Enter same passphrase again: *********
```

これにより、公開キーと秘密キーがローカルマシン上に作成されます。

例

```
/Users/craig/.ssh/id_ecdsa
/Users/craig/.ssh/id_ecdsa.pub
```

{% endstep %}

{% step %}
**レコードにキーを追加する**

手順2で生成した公開キーと秘密キーの内容を、Keeperレコードに追加します。公開キーと秘密キーをそれぞれコピーして、Keeperの該当フィールドに貼り付けます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FW4hVNXgNqaT9tf6w8JFb%2Fimage.png?alt=media&#x26;token=b8ba8875-f5ed-4aee-9d34-0aafbff2b490" alt="" width="375"><figcaption><p>Github認証用Keeper SSHキー</p></figcaption></figure>
{% endstep %}

{% step %}
**Githubにキーを追加する**

* GitHub.comで、**\[Settings]** > **\[SSH and GPG keys]** > **\[New SSH Key]** に進み、「Key type」&#x3067;**「Authentication Key」**&#x3092;選択します。
* タイトルを入力し、手順2で作成した `id_ecdsa.pub` の公開キーの内容を貼り付けます。
* キーを保存します。
  {% endstep %}

{% step %}
**SSHエージェントにキーを追加する**

Keeperデスクトップアプリを開き、**\[設定]** > **\[開発者]** > **\[SSHエージェント]** > **\[編集]** の順に進み、手順3で作成した「Github Auth key」を使用可能なキーの一覧から選択します。

**\[更新]** をクリックして設定を保存します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FRKUjaOn13ML8g9PhF0xg%2Fimage.png?alt=media&#x26;token=324cc6cc-ea9e-4239-9760-8e09c1d3a9ca" alt="" width="375"><figcaption><p>Keeper SSHエージェントからGithub認証キーを選択する</p></figcaption></figure>
{% endstep %}

{% step %}
**ローカルキーを削除する**

現時点で、秘密キーと公開キーの両方がKeeperによって安全に保管・管理されているため、ローカルキーは削除しておきましょう。この場合、公開キーと秘密キーの両方を削除して問題ありません。

```
rm /Users/craig/.ssh/id_ecdsa
rm /Users/craig/.ssh/id_ecdsa.pub
```

{% endstep %}

{% step %}
**Githubでの認証**

任意のリポジトリ内でターミナルを開き、GitHub に対して認証済みリクエストを実行します。

```
git pull
```

{% endstep %}

{% step %}
これにより、Keeper ダイアログがすぐに起動し、Github 認証キーを承認するようになります。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FsH3uoOUcRO8iEmOZ0UI3%2Fimage.png?alt=media&#x26;token=583dd899-05b8-49f2-8403-2c4555250b25" alt=""><figcaption><p>KeeperでGithub認証キーの使用を承認する</p></figcaption></figure>

\[承認] をクリックすると、Keeper に保存されているキーを使用してGithubで認証が行われます。

セットアップが完了しました。
{% endstep %}
{% endstepper %}

## コミットの署名 <a href="#signing-commits" id="signing-commits"></a>

以下は、Keeperを使って GitHubコミットに署名するための専用キーを作成するて手順です。

{% stepper %}
{% step %}
**Keeperレコードを作成する**

* **SSHキー**タイプや**PAMユーザー**タイプなどのレコードを作成します。
* 強力なパスワードを生成します。
  {% endstep %}

{% step %}
**SSHキーを生成する**

以下のように、Keeperで生成したパスワードを使用して、ターミナルでSSHキーを生成します。

```
ssh-keygen -t ecdsa -b 521 -C "craig@keeperdemo.io"

Enter passphrase (empty for no passphrase): *********
Enter same passphrase again: *********
```

これにより、公開キーと秘密キーがローカルマシン上に作成されます。

例

```
/Users/craig/.ssh/id_ecdsa
/Users/craig/.ssh/id_ecdsa.pub
```

{% endstep %}

{% step %}
**レコードにキーを追加する**

手順2で生成した公開キーと秘密キーの内容を、Keeperレコードに追加します。公開キーと秘密キーをそれぞれコピーして、Keeperの該当フィールドに貼り付けます。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FifqLpicOKiR5swRbSUN6%2Fimage.png?alt=media&#x26;token=192e5470-c661-466e-9456-bfa1c9e32bf4" alt="" width="375"><figcaption><p>Github署名用Keeper SSHキー</p></figcaption></figure>
{% endstep %}

{% step %}
**Githubにキーを追加する**

* GitHub.comで、**\[Settings]** > **\[SSH and GPG keys]** > **\[New SSH Key]** に進み、「Key type」&#x3067;**「Signing Key」**&#x3092;選択します。
* タイトルを入力し、手順2で作成した公開キーの内容を貼り付けます。
* キーを保存します。
  {% endstep %}

{% step %}
**SSHエージェントにキーを追加する**

Keeperを開き、**\[設定]** > **\[開発者]** > **\[SSHエージェント]** > **\[編集]** の順に進み、手順3で作成したGithub署名キーを使用可能なキーの一覧から選択します。

**\[更新]** をクリックして設定を保存します。
{% endstep %}

{% step %}
**ローカル秘密キーを削除する**

Keeperで秘密キーが安全に管理されているため、ローカルの秘密キーのみ削除します。公開キー (xxx.pub) は署名時に識別に使用されるため、保持します。

```
rm /Users/craig/.ssh/id_ecdsa
```

公開キーのファイル名をより分かりやすいものに変更します。

```
cd ~/.ssh
mv id_ecdsa.pub git_signing_key.pub
```

公開キーを識別できるよう、ユーザー名と公開キーの内容を `~/.ssh/allowed_signers` というファイルに記載します。以下の形式で入力します。

```
craig@keeperdemo.io <git_signing_key.pub の内容>
```

この例では、ファイルの内容は以下のようになります。

{% code overflow="wrap" %}

```
craig@keeperdemo.io ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAD2VeqOZ9bk2ABF6AZ63qJY2sDfz0kJJPfDW0zpres0/p1YGGJBYtyU4l3nIgwx0K2iEKFty429N2NNfIMBsqI+ngDq3/VGaexmZxymJnCzOl9+J1IQr6u05jZHLsk1FOALjOSm9jv4bF/DyK4oh5shKMlTHAeDWPfqMd3JwncSYBzKfA== craig@keeperdemo.io
```

{% endcode %}
{% endstep %}

{% step %}
**Git署名を有効にする**

ターミナルで以下のコマンドを実行し、GitHubにこの新しい署名キーと `allowed_signers` ファイルを使用するよう指示します。

```
git config --global user.signingkey ~/.ssh/git_signing_key.pub
git config --global gpg.format ssh
git config --global commit.gpgsign true
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers
```

この操作により、`~/.gitconfig` に複数の行が追加され、設定がグローバルに適用されます。グローバルではなく、個別のリポジトリごとに設定を行うことも可能です。
{% endstep %}

{% step %}
**署名の検証**

リポジトリから、空のコミットを実行して署名プロセスをテストしてみましょう。

```
git commit --allow-empty -m "Test commit with SSH signing"
```

これにより、キーを承認するためのKeeperダイアログがすぐに起動します。

<figure><img src="https://859776093-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPL6k1aGsLiFiiJ3Y7zCl%2Fuploads%2FcZ6JCGMJwPBDoswFDWZT%2Fimage.png?alt=media&#x26;token=8fdc4d7a-203b-4afe-b30c-54507a39359f" alt=""><figcaption></figcaption></figure>

コミットに署名が適用されたことを確認するには、以下のコマンドを実行します。

```
git log --show-signature
```

以下のような応答が表示されます。

```
commit 52319faf2e7c02a (HEAD -> main)
Good "git" signature for craig@keeperdemo.io with ECDSA key SHA256:xxxxxxx
Author: Craig Lurey <craig@keeperdemo.io>
Date:   Fri Jan 17 20:18:19 2025 -0800

    Test commit with SSH signing
```

セットアップが完了しました。
{% endstep %}
{% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.keeper.io/jp/keeperpam/privileged-access-manager/ssh-agent/integration-with-git.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
