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