Skip to main content

配置 TLS 和 SSH 密码

可以配置 GitHub Enterprise Server 用于 TLS 和 SSH 连接的加密套件和加密算法,以满足特定的合规性或安全要求。

谁可以使用此功能?

Site administrators

关于密码套件和算法配置

GitHub Enterprise Server 允许您配置要使用的密码套件和加密算法:

  • 端口 443(HTTPS Web 接口)和 8443 上的 TLS 连接(HTTPS 管理控制台)
  • 端口 22 上的 SSH 连接(通过 SSH 执行 Git 操作)和端口 122(管理 shell 访问)

默认的安全密码套件基于行业标准 TLS 强化建议和现代安全最佳做法。 大多数组织应使用这些默认值,除非特定的符合性或安全要求另有规定。

组织可能需要自定义密码套件和加密算法,以满足特定的组织安全策略、行业标准或法规要求。

从 GitHub Enterprise Server 3.19 开始,TLS 密码是可配置的,Web 网关使用更安全的密码默认值。 为了保持与现有实例的向后兼容性,新预配的实例将使用这些新的默认值。

警告

配置过于严格的密码套件可能会阻止客户端连接到实例。 始终首先测试非生产环境中的更改,确保至少一个密码套件与客户端兼容,并在应用配置更改后验证连接性。

注意

配置 TLS 密码套件时,请在配置命令中使用逗号分隔的值。 GitHub Enterprise Server 自动将逗号分隔符转换为 HAProxy 配置的冒号。 密码套件按指定的顺序进行评估,因此请首先列出首选密码套件。

配置 TLS 密码套件

可以配置用于 TLS 1.2 和 TLS 1.3 连接的密码套件。

列出可用的 TLS 密码套件

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 若要查看 TLS 1.2 的默认安全密码套件,请运行以下命令。

    Shell
    ghe-crypto list tlsv12-ciphersuites
    
  3. 若要查看 TLS 1.3 的默认安全密码套件,请运行以下命令。

    Shell
    ghe-crypto list tlsv13-ciphersuites
    

查看当前密码配置

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 若要查看配置的 TLS 1.2 密码套件,请运行以下命令。

    Shell
    ghe-config github-ssl.tlsv12-ciphersuites
    
  3. 若要查看配置的 TLS 1.3 密码套件,请运行以下命令。

    Shell
    ghe-config github-ssl.tlsv13-ciphersuites
    

    如果这些命令返回空值,则实例使用安全默认值。

设置 TLS 1.2 密码套件

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 使用 ghe-crypto check 命令检查所需的 TLS 1.2 密码套件。 将 CIPHER1,CIPHER2,CIPHER3 替换为逗号分隔的密码套件列表。

    Shell
    ghe-crypto check tlsv12-ciphersuites CIPHER1,CIPHER2,CIPHER3
    

    例如:

    ghe-crypto check tlsv12-ciphersuites ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-GCM-SHA384
    
  3. 如果密码字符串有效,请设置 TLS 1.2 密码套件。 将 CIPHER1,CIPHER2,CIPHER3 替换为你的逗号分隔列表。

    Shell
    ghe-config github-ssl.tlsv12-ciphersuites 'CIPHER1,CIPHER2,CIPHER3'
    

    例如:

    ghe-config github-ssl.tlsv12-ciphersuites 'ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-GCM-SHA384'
    
  4. 检查配置。

    Shell
    ghe-config-check
    
  5. 若要应用配置,请运行以下命令。

    注意

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

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

  7. 如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。

设置 TLS 1.3 密码套件

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 使用 ghe-crypto check 命令检查所需的 TLS 1.3 密码套件。 将 CIPHER1,CIPHER2,CIPHER3 替换为逗号分隔的密码套件列表。

    Shell
    ghe-crypto check tlsv13-ciphersuites CIPHER1,CIPHER2,CIPHER3
    

    例如:

    ghe-crypto check tlsv13-ciphersuites TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256
    
  3. 如果密码字符串有效,请设置 TLS 1.3 密码套件。 将 CIPHER1,CIPHER2,CIPHER3 替换为你的逗号分隔列表。

    Shell
    ghe-config github-ssl.tlsv13-ciphersuites 'CIPHER1,CIPHER2,CIPHER3'
    

    例如:

    ghe-config github-ssl.tlsv13-ciphersuites 'TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256'
    
  4. 检查配置。

    Shell
    ghe-config-check
    
  5. 若要应用配置,请运行以下命令。

    注意

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

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

  7. 如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。

配置 SSH 加密算法

可以配置用于端口 22(Git 操作)和端口 122(管理外壳访问权限)上的 SSH 连接的加密算法。

列出可用的 SSH 算法

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 若要查看默认的安全 SSH 密码,请运行以下命令。

    Shell
    ghe-crypto list ssh-ciphers
    
  3. 若要查看默认的安全 SSH MAC 算法,请运行以下命令。

    Shell
    ghe-crypto list ssh-mac-algorithms
    
  4. 若要查看默认的安全 SSH 密钥交换算法,请运行以下命令。

    Shell
    ghe-crypto list ssh-kex-algorithms
    
  5. 若要查看默认的安全 SSH 签名类型,请运行以下命令。

    Shell
    ghe-crypto list ssh-signature-types
    

查看当前的 SSH 配置

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 若要查看配置的 SSH 密码,请运行以下命令。

    Shell
    ghe-config github-ssl.ssh-ciphers
    
  3. 若要查看配置的 SSH MAC 算法,请运行以下命令。

    Shell
    ghe-config github-ssl.ssh-mac-algorithms
    
  4. 若要查看配置的 SSH 密钥交换算法,请运行以下命令。

    Shell
    ghe-config github-ssl.ssh-kex-algorithms
    
  5. 若要查看配置的 SSH 签名类型,请运行以下命令。

    Shell
    ghe-config github-ssl.ssh-signature-types
    

    如果这些命令返回空值,则实例使用安全默认值。

设置 SSH 密码

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 使用 ghe-crypto check 命令检查所需的 SSH 密码。 将 cipher1,cipher2,cipher3 替换为逗号分隔的加密列表。

    Shell
    ghe-crypto check ssh-ciphers cipher1,cipher2,cipher3
    

    例如:

    ghe-crypto check ssh-ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com
    
  3. 如果密码字符串有效,请设置 SSH 密码。 将 cipher1,cipher2,cipher3 替换为你的逗号分隔列表。

    Shell
    ghe-config github-ssl.ssh-ciphers 'cipher1,cipher2,cipher3'
    

    例如:

    ghe-config github-ssl.ssh-ciphers 'chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com'
    
  4. 检查配置。

    Shell
    ghe-config-check
    
  5. 若要应用配置,请运行以下命令。

    注意

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

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

  7. 如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。

设置 SSH MAC 算法

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 使用 ghe-crypto check 命令检查所需的 SSH MAC 算法。 将 mac1,mac2,mac3 替换为以逗号分隔的 MAC 算法列表。

    Shell
    ghe-crypto check ssh-mac-algorithms mac1,mac2,mac3
    

    例如:

    ghe-crypto check ssh-mac-algorithms hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
    
  3. 如果 MAC 算法字符串有效,请设置 SSH MAC 算法。 将 mac1,mac2,mac3 替换为你的逗号分隔列表。

    Shell
    ghe-config github-ssl.ssh-mac-algorithms 'mac1,mac2,mac3'
    

    例如:

    ghe-config github-ssl.ssh-mac-algorithms 'hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com'
    
  4. 检查配置。

    Shell
    ghe-config-check
    
  5. 若要应用配置,请运行以下命令。

    注意

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

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

  7. 如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。

设置 SSH 密钥交换算法

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 使用 ghe-crypto check 命令检查所需的 SSH 密钥交换算法。 将kex1,kex2,kex3替换为以逗号分隔的密钥交换算法列表。

    Shell
    ghe-crypto check ssh-kex-algorithms kex1,kex2,kex3
    

    例如:

    ghe-crypto check ssh-kex-algorithms curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521
    
  3. 如果密钥交换算法字符串有效,请设置 SSH 密钥交换算法。 将 kex1,kex2,kex3 替换为你的逗号分隔列表。

    Shell
    ghe-config github-ssl.ssh-kex-algorithms 'kex1,kex2,kex3'
    

    例如:

    ghe-config github-ssl.ssh-kex-algorithms 'curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp521'
    
  4. 检查配置。

    Shell
    ghe-config-check
    
  5. 若要应用配置,请运行以下命令。

    注意

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

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

  7. 如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。

设置 SSH 签名类型

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 使用 ghe-crypto check 命令检查所需的 SSH 签名类型。 将 sig1,sig2,sig3 替换为逗号分隔的签名类型列表。

    Shell
    ghe-crypto check ssh-signature-types sig1,sig2,sig3
    

    例如:

    ghe-crypto check ssh-signature-types ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384
    
  3. 如果签名类型字符串有效,请设置 SSH 签名类型。 将 sig1,sig2,sig3 替换为你的逗号分隔列表。

    Shell
    ghe-config github-ssl.ssh-signature-types 'sig1,sig2,sig3'
    

    例如:

    ghe-config github-ssl.ssh-signature-types 'ssh-ed25519,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384'
    
  4. 检查配置。

    Shell
    ghe-config-check
    
  5. 若要应用配置,请运行以下命令。

    注意

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

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

  7. 如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。

排查密码配置问题

如果客户端在更改加密配置后无法连接到 你的 GitHub Enterprise Server 实例 ,可以对该问题进行排查。

  1. 检查客户端是否支持配置的 TLS 或 SSH 协议版本。
  2. 验证至少一个已配置的密码套件是否与客户端兼容。
  3. 查看实例日志,查找 TLS 握手失败或 SSH 连接错误。 有关访问日志的详细信息,请参阅 关于系统日志
  4. 暂时还原默认设置以验证问题是否与密码相关。 有关详细信息,请参阅 还原默认密码套件和算法设置
  5. 如果在还原默认值后,问题仍然存在,请联系 GitHub Enterprise 支持

还原默认密码套件和算法设置

若要还原默认的安全密码套件或算法,请取消设置配置值。

  1. 通过 SSH 连接到目标 GitHub Enterprise Server 实例。 有关详细信息,请参阅“访问管理 shell (SSH)”。

    ssh -p 122 admin@HOSTNAME
    
  2. 重置配置设置。 将SETTING替换为您要还原为默认值的设置的名称。

    Shell
    ghe-config --unset github-ssl.SETTING
    

    例如,若要还原默认 TLS 1.2 密码套件,请执行以下作:

    ghe-config --unset github-ssl.tlsv12-ciphersuites
    
  3. 若要应用配置,请运行以下命令。

    注意

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

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

  5. 如果配置了用户消息或维护模式,请删除该消息并禁用维护模式。