Skip to main content

Enterprise Server 3.15 目前作为候选发布提供。

配置与实例的 SSH 连接

可以通过配置客户端可用于建立连接的 SSH 算法来提高 你的 GitHub Enterprise Server 实例 的安全性。

谁可以使用此功能?

Site administrators can configure SSH connections to a GitHub Enterprise Server instance.

关于与实例的 SSH 连接

每个 GitHub Enterprise Server 实例都通过两个端口接受 SSH 连接。 站点管理员可以通过 SSH 访问管理 shell,然后运行命令行实用工具、故障排除并执行维护。 用户可以通过 SSH 进行连接,以访问和写入实例存储库中的 Git 数据。 用户对实例没有 shell 访问权限。 有关详细信息,请参阅以下文章。

若要在你的环境中容纳 SSH 客户端,可以配置 你的 GitHub Enterprise Server 实例 将接受的连接类型。

使用 RSA 密钥配置 SSH 连接

当用户通过端口 22 借助 SSH 在 你的 GitHub Enterprise Server 实例 上执行 Git 操作时,客户端可以使用 RSA 密钥进行身份验证。 客户端可以使用 SHA-1 哈希函数对尝试进行签名。 在此上下文中,SHA-1 哈希函数不再安全。 有关详细信息,请参阅维基百科上的 SHA-1

默认情况下,满足以下两个条件的 SSH 连接将失败。

  • RSA 密钥在 2022 年 8 月 1 日午夜 UTC 截止日期之后添加到 你的 GitHub Enterprise Server 实例 上的用户帐户。
  • SSH 客户端使用 SHA-1 哈希函数对连接尝试进行签名。

可以调整截止日期。 如果用户在截止日期之前上传了 RSA 密钥,只要密钥保持有效,客户端便可以继续使用 SHA-1 成功连接。 或者,如果客户端使用 SHA-1 哈希函数对连接进行签名,你可以拒绝所有使用 RSA 密钥进行身份验证的 SSH 连接。

无论你为实例选择何种设置,客户端都可以继续使用任何使用 SHA-2 哈希函数签名的 RSA 密钥进行连接。

若使用 SSH 证书颁发机构,如果证书的 valid_after 日期晚于截止日期,则连接将失败。 有关详细信息,请参阅“关于 SSH 认证中心”。

有关详细信息,请参阅 the GitHub Blog

  1. 通过 SSH 连接到 你的 GitHub Enterprise Server 实例。 如果实例包含多个节点,例如,如果配置了高可用性或异地复制,则通过 SSH 连接到主节点。 如果使用群集,则可以通过 SSH 连接到任何节点。 将 HOSTNAME 替换为实例的主机名,或节点的主机名或 IP 地址。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. 使用 ghe-find-insecure-git-operations 实用工具审核实例的日志以查找使用不安全算法或哈希函数的连接。 有关详细信息,请参阅“命令行实用程序”。

  3. 若要配置一个截止日期,在该截止日期之后,你的 GitHub Enterprise Server 实例 将拒绝来自使用该日期之后上传的 RSA 密钥的客户端的连接(如果连接由 SHA-1 哈希函数签名),请输入以下命令。 将 RFC-3399-UTC-TIMESTAMP 替换为有效的 RFC 3399 UTC 时间戳__。 例如,默认值 2022 年 8 月 1 日将表示为 2022-08-01T00:00:00Z。 有关详细信息,请参阅 IETF 网站上的 RFC 3339

    $ ghe-config app.gitauth.rsa-sha1 RFC-3339-UTC-TIMESTAMP
    
  4. 或者,若要完全禁用使用由 SHA-1 哈希函数签名的 RSA 密钥的 SSH 连接,请输入以下命令。

    ghe-config app.gitauth.rsa-sha1 false
    
  5. 若要应用配置,请运行以下命令。

    Note

    在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。

    Shell
    ghe-config-apply
    
  6. 等待配置运行完毕。