关于 SSH 认证中心
SSH 证书是一种机制:一个 SSH 密钥对另一个 SSH 密钥签名。 如果使用 SSH 认证中心 (CA) 为组织成员提供已签名的 SSH 证书,您可以将 CA 添� 到企业帐户或组织,以便组织成员使用其证书访问组织资源。
在将 SSH CA 添� 到组织或企业帐户后,您可以使用 CA 为组织成员签名客户 SSH 证书。 组织成员可以使用已签名的证书通过 Git 访问组织的仓库(并且只访问您组织的仓库)。 (可选)您可以要求成员使用 SSH 证书访问组织资源。 更多信息请参阅“管理组织的 SSH 认证机构”或“在企业中实施安全设置策略”。
例如,您可以构建内部系统,每天早上向开发者颁发新证书。 每个开发者可以使用其每日证书处理组织在 GitHub Enterprise Server 上的仓库。 在一天结束时,证书会自动到期,以保护仓库,避免证书以后被窃取。
成员将� 法使用其证书访问其用户帐户拥有的仓库的复刻。
为防止身份验证错误,组织成员应使用包含组织 ID 的特殊 URL,以使用签名证书克隆仓库。 对仓库具有读取权限的任何人都可在仓库页面上找到此 URL。 更多信息请参阅“克隆仓库”。
颁发证书
在颁发每个证书时,必须包含扩展,以指定证书用于哪个 GitHub Enterprise Server 用户。 例如,您可以使用 OpenSSH 的 ssh-keygen
命令,将 KEY-IDENTITY 替换为密钥� �识,USERNAME 替换为 GitHub Enterprise Server 用户名: 您生成的证书将授权代表该用户使用您组织的任何资源。 在签发证书之前,请确保验证用户的身份。
$ ssh-keygen -s ./ca-key -V '+1d' -I KEY-IDENTITY -O extension:login@[hostname]=USERNAME ./user-key.pub
警告:证书签名并颁发后,� 法吊销。 请确保使用 -V
� �志来配置证书的生存期,否则证书可以� 限期使用。
要为使用 SSH 访问多个 GitHub 产品的人颁发证书,您可以包括两个登录扩展,以指定每个产品的用户名。 例如,以下命令将为 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
扩展来限制组织成员用来访问组织资源的 IP 地址。 扩展接受采用 CIDR 表示法的特定 IP 地址或一个 IP 地址范围。 您可以指定多个地址或范围,用逗号分隔值。 更多信息请参阅维基百科上的“� 类别域间路由”。
$ 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