Skip to main content
ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2022-06-03. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてください。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してください。

SSH 認証局について

SSH認証局を利用すると、メンバーがGitでリソースにアクセスするときに使用するSSH証明書を、OrganizationまたはEnterpriseアカウントが発行できます。

SSH 認証局について

SSH証明書とは、1つのSSHキーでもうひとつのSSHキーに署名する仕組みです。 SSH認証局 (CA) を利用して、Organizationのメンバーに署名済みのSSH証明書を提供すると、EnterpriseアカウントまたはOrganizationにCAを追加できるため、Organizationのメンバーはそれぞれの証明書を使用してOrganizationのリソースにアクセスできるようになります。

SSH CAをOrganizationまたはEnterpriseアカウントに追加すると、そのCAを利用して、OrganizationメンバーのクライアントSSH証明書に署名できるようになります。 Organizationのメンバーは、署名済みの証明書を使用して、GitでOrganizationのリポジトリにアクセスできます (ただし、自分のOrganizationのリポジトリに限る)。 あるいは、メンバーに対してOrganizationのリソースにアクセスする際にSSH証明書を使うよう求めることもできます。 詳しい情報については「OrganizationのSSH認証局の管理」及び「Enterpriseでのセキュリティ設定のポリシーの施行」を参照してください。

たとえば、毎朝新しい証明書を開発者に発行する内部システムなども構築できます。 各開発者は、その日の証明書を使用して、GitHub Enterprise ServerでOrganizationのリポジトリを扱うことができます。 1日の最後になると証明書は自動的に失効するので、証明書が侵害されることがあっても、リポジトリは保護されます。

メンバーは、自分の個人アカウントが所有するリポジトリのフォークにアクセスする際に、自分の証明書を使うことはできなくなります。

SSH証明書を使用するSSH URLについて

OrganizationがSSH証明書を必要とするなら、認証エラーを回避するために、OrganizationのメンバーはSSH経由でGitの操作をする際にOrganization IDを含む特別なURLを使わなければなりません。 この特別なURLを使うと、クライアントとサーバーは認証の際にメンバーのコンピュータが使うキーに関して簡単にネゴシエーションできるようになります。 メンバーがgit@github.comで始まる通常のURLを使うと、SSHクライアントは間違ったキーを提供し、操作が失敗することになるかもしれません。

リポジトリへの読み取りアクセスを持つ人は、リポジトリのメインページのCodeドロップダウンメニューを選択し、続いてUse SSH(SSHを使用)をクリックしてください。

OrganizationがSSH証明書を必要としない場合は、メンバーは自分のSSHキーか、他の認証方法を使い続けることができます。 この場合は、特別なURLでも、git@github.comで始まる通常のURLでも動作します。

証明書の発行

各証明書を発行する際には、その証明書がどのGitHub Enterprise Serverユーザー用かを示すエクステンションを指定する必要があります。 たとえば、OpenSSH のssh-keygen コマンドを以下のように使用することができます。KEY-IDENTITY は特定のキー IDに、USERNAME は GitHub Enterprise Server ユーザ名に置き換えます。 あなたが生成する証明書は、あなたのOrganizationのリソースに対してそのユーザの代わりに振る舞うことを認可されるようになります。 証明書を発行する前に、そのユーザのアイデンティティを必ず検証してください。

ノート: これらのコマンドを使うためには、OpenSSH 7.6以降へのアップデートが必要です。

$ ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@[hostname]=USERNAME ./user-key.pub

警告: 証明書が署名され、発行されると、その証明書を失効させることはできません。 必ず-Vフラグを使い、証明書の有効期限を設定してください。そうしないと、その証明書は無期限に使用できることになります。

SSH を使用して複数の GitHub 製品にアクセスするユーザに証明書を発行するには、2 つのログイン機能拡張を含めて、各製品のユーザ名を指定できます。 たとえば、次のコマンドは、GitHub Enterprise Cloud のユーザアカウントに対して USERNAME-1 の証明書を発行し、HOSTNAME の GitHub AE または GitHub Enterprise Server のユーザアカウントに対して USERNAME-2 の証明書を発行します。

$ ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@github.com=USERNAME-1 extension:login@HOSTNAME=USERNAME-2 ./user-key.pub

source-address エクステンションを使用して、Organization のリソースに Organization のメンバーがアクセスできる IP アドレスを制限できます。 エクステンションには、CIDR 表記を用いて特定の IP アドレスまたは一定範囲の IPアドレスを指定できます。 コンマで値を区切ることで、複数のアドレスや範囲を指定できます。 詳しい情報については、Wikipedia の「Classless Inter-Domain Routing」を参照してください。

$ ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@[hostname]=USERNAME -O source-address=COMMA-SEPARATED-LIST-OF-IP-ADDRESSES-OR-RANGES ./user-key.pub