关于与实例的 SSH 连接
每个 GitHub Enterprise Server 实例都通过两个端口接受 SSH 连接。 站点管理员可以通过 SSH 访问管理 shell,然后运行命令行实用工具、故障排除并执行维护。 用户可以通过 SSH 进行连接,以访问和写入实例存储库中的 Git 数据。 用户对实例没有 shell 访问权限。 有关详细信息,请参阅以下文章。
- “网络端口”
- “访问管理 shell (SSH)”
- “关于 SSH”
若要在你的环境中容纳 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。
-
通过 SSH 连接到 你的 GitHub Enterprise Server 实例。 如果实例包含多个节点,例如,如果配置了高可用性或异地复制,则通过 SSH 连接到主节点。 如果使用群集,则可以通过 SSH 连接到任何节点。 将 HOSTNAME 替换为实例的主机名,或节点的主机名或 IP 地址。 有关详细信息,请参阅“访问管理 shell (SSH)”。
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
使用
ghe-find-insecure-git-operations
实用工具审核实例的日志以查找使用不安全算法或哈希函数的连接。 有关详细信息,请参阅“命令行实用程序”。 -
若要配置一个截止日期,在该截止日期之后,你的 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
-
或者,若要完全禁用使用由 SHA-1 哈希函数签名的 RSA 密钥的 SSH 连接,请输入以下命令。
ghe-config app.gitauth.rsa-sha1 false
-
若要应用配置,请运行以下命令。
注意:在配置运行过程中,你的 GitHub Enterprise Server 实例 上的服务可能会重启,这可能会导致用户短暂停机。
Shell ghe-config-apply
ghe-config-apply
-
等待配置运行完毕。