Skip to main content

命令行实用程序

GitHub Enterprise Server 包含的各种实用程序可以帮助解决特殊问题或执行特定任务。

以 SSH 管理员用户身份登录后,你可以在虚拟机上的任何位置执行这些命令。 有关详细信息,请参阅“访问管理 shell (SSH)”。

常规

ghe-announce

此实用程序会在每个 GitHub Enterprise 页面顶部设置横幅, 你可以使用横幅向用户广播消息。

# Sets a message that's visible to everyone
$ ghe-announce -s MESSAGE
> Announcement message set.
# Removes a previously set message
$ ghe-announce -u
> Removed the announcement message

要允许每个用户自己关闭通知,请使用 -d 标志。

# Sets a user-dismissible message that's visible to everyone
$ ghe-announce -d -s MESSAGE
> Announcement message set.
# Removes a previously set message
$ ghe-announce -u
> Removed the announcement message, which was user
> dismissible: MESSAGE

你也可以使用企业设置在 GitHub Enterprise Server 上设置一个公告横幅。 有关详细信息,请参阅“自定义企业的用户消息”。

ghe-aqueduct

此实用程序会显示关于后台作业(活动作业和队列中的作业)的信息, 它提供的作业计数与每个页面顶部管理员统计信息栏中的计数相同。

此实用程序可以帮助确定 Aqueduct 服务器在处理后台作业时是否会出现问题。 下列任一场景均可能指示 Aqueduct 存在问题:

  • 后台作业数增加,而活动作业数保持不变。
  • 事件源未更新。
  • Web 挂钩未触发。
  • Web 界面在 Git 推送后未更新。

如果怀疑 Aqueduct 出现故障,请访问 GitHub Enterprise 支持 获取帮助。

使用此命令,你还可以暂停或恢复队列中的作业。

$ ghe-aqueduct status
# lists queues and the number of currently queued jobs
# for all queues
$ ghe-aqueduct queue_depth --queue QUEUE
# lists the number of currently queued jobs for the
# specified queue
$ ghe-aqueduct pause --queue QUEUE
# pauses the specified queue
$ ghe-aqueduct resume --queue QUEUE
# resumes the specified queue

ghe-check-disk-usage

此实用程序会检查磁盘中的大文件或已删除但文件句柄仍保持打开的文件。 如果尝试释放根分区中的空间,应运行此实用程序。

ghe-check-disk-usage

ghe-cleanup-caches

此实用程序会清理各种有可能占用根卷上的额外磁盘空间的缓存。 如果你发现一段时间内根卷磁盘空间的使用量显著升高,最好运行此应用程序,查看是否可以帮助降低整体使用量 。

ghe-cleanup-caches

ghe-cleanup-settings

此实用程序会擦除所有现有的 管理控制台 设置。

提示:一般来说,只有在已联系支持部门并且他们要求你这样做的时候,才会执行此操作。

ghe-cleanup-settings

ghe-config

此实用程序可用于检索和修改 你的 GitHub Enterprise Server 实例 的配置设置。

$ ghe-config core.github-hostname
# Gets the configuration value of `core.github-hostname`
$ ghe-config core.github-hostname URL
# Sets the configuration value of `core.github-hostname`
# to the specified URL
$ ghe-config -l
# Lists all the configuration values

可让你在 cluster.conf 中找到节点的通用唯一标识符 (UUID)。

  ghe-config HOSTNAME.uuid

允许你将用户列表从 REST API 速率限制中排除。 120,000 个请求的硬性限制仍将适用于这些用户。 为此命令提供的用户名区分大小写。 有关详细信息,请参阅“REST API 的速率限制”。

$ ghe-config app.github.rate-limiting-exempt-users "hubot github-actions[bot]"
# Exempts the users hubot and github-actions[bot] from rate limits.
# Usernames are case-sensitive.

ghe-config-apply

此实用程序会应用 管理控制台 设置,重新加载系统服务,准备存储设备,重新加载应用程序服务并运行任何待处理的数据库迁移。 它等效于单击 管理控制台 web UI 中的“保存设置”,或向 /setup/api/configure 终结点发送 POST 请求。

你有可能永远不需要手动运行此实用程序,但如果希望通过 SSH 自动完成设置保存过程,也可以使用此实用程序。

ghe-config-apply

ghe-console

此实用程序会在你的 GitHub Enterprise 设备上打开 GitHub Rails 控制台。 在没有来自 GitHub Enterprise 支持 的指导下,请勿使用此命令。 不正确的使用可能造成损坏或数据丢失。

ghe-console

ghe-dbconsole

此实用程序会在你的 GitHub Enterprise 设备上打开 MySQL 数据库会话。 在没有来自 GitHub Enterprise 支持 的指导下,请勿使用此命令。 不正确的使用可能造成损坏或数据丢失。

ghe-dbconsole

ghe-es-index-status

此实用程序会以 CSV 格式返回 ElasticSearch 索引的摘要。

将包含标头行的索引摘要打印到 STDOUT

$ ghe-es-index-status -do
> warning: parser/current is loading parser/ruby23, which recognizes
> warning: 2.3.3-compliant syntax, but you are running 2.3.4.
> warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
> Name,Primary,Searchable,Writable,UpToDate,RepairProgress,Version
> code-search-1,true,true,true,true,100.0,72e27df7c631b45e026b42bfef059328fa040e17
> commits-5,true,true,true,true,100.0,7ed28813100c47813ef654c0ee2bb9abf21ab744
> gists-4,true,true,true,true,100.0,cf8e7d04fcf2564c902e2873c424a279cc41079d
> issues-4,false,false,false,true,100.0,d0bb08f71eebf6e7b070572aa399b185dbdc8a76
> issues-5,true,true,true,true,100.0,d0bb08f71eebf6e7b070572aa399b185dbdc8a76
> projects-2,true,true,true,true,100.0,c5cac1c4b3c66d42e609d088d174dbc3dd44469a
> pull-requests-6,true,true,true,true,100.0,6a466ad6b896a3499509990979bf9a18d7d41de3
> repos-6,true,true,true,true,100.0,6c8b5fbba0fc1e409558db411d05e092c1387082
> users-5,true,true,true,true,100.0,38984875552bb826c9ec42999f409cb2e95556eb
> wikis-4,true,true,true,true,100.0,2613dec44bd14e14577803ac1f9e4b7e07a7c234

将索引摘要和管道结果打印到 column,以供读取:

$ ghe-es-index-status -do | column -ts,
> warning: parser/current is loading parser/ruby23, which recognizes
> warning: 2.3.3-compliant syntax, but you are running 2.3.4.
> warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
> Name             Primary  Searchable  Writable  UpToDate  RepairProgress  Version
> code-search-1    true     true        true      true      100.0           72e27df7c631b45e026b42bfef059328fa040e17
> commits-5        true     true        true      true      100.0           7ed28813100c47813ef654c0ee2bb9abf21ab744
> gists-4          true     true        true      true      100.0           cf8e7d04fcf2564c902e2873c424a279cc41079d
> issues-4         false    false       false     true      100.0           d0bb08f71eebf6e7b070572aa399b185dbdc8a76
> issues-5         true     true        true      true      100.0           d0bb08f71eebf6e7b070572aa399b185dbdc8a76
> projects-2       true     true        true      true      100.0           c5cac1c4b3c66d42e609d088d174dbc3dd44469a
> pull-requests-6  true     true        true      true      100.0           6a466ad6b896a3499509990979bf9a18d7d41de3
> repos-6          true     true        true      true      100.0           6c8b5fbba0fc1e409558db411d05e092c1387082
> users-5          true     true        true      true      100.0           38984875552bb826c9ec42999f409cb2e95556eb
> wikis-4          true     true        true      true      100.0           2613dec44bd14e14577803ac1f9e4b7e07a7c234

ghe-legacy-github-services-report

此实用程序会列出你的设备中使用 GitHub Services 的存储库,作为一种集成方法,该集成已于 2018 年 10 月 1 日停用。 你的设备上的用户可能已设置 GitHub Services,为发往某些仓库的推送创建通知。 有关详细信息,请参阅 the GitHub Blog 上的“宣布弃用 GitHub 服务”。 如需获取关于此命令的详细信息或附加选项,请使用 -h 标志。

ghe-legacy-github-services-report

ghe-logs-tail

此实用程序允许跟踪记录安装中的所有相关日志文件。 你可以传入选项,将日志限制为特定集合。 使用 -h 标志表示附加选项。

ghe-logs-tail

ghe-maintenance

此实用程序允许你控制安装维护模式的状态, 其设计为主要由 管理控制台 在后台使用,但也可以直接使用。 有关详细信息,请参阅“启用和排定维护模式”。

ghe-maintenance -h

ghe-motd

此实用程序重新显示管理员通过管理 shell 访问实例时看到的当天消息 (MOTD)。 输出包含实例状态的概述。

ghe-motd

ghe-nwo

此实用程序会根据仓库 ID 返回仓库名称和所有者。

ghe-nwo REPOSITORY_ID

ghe-org-admin-promote

使用此命令可为设备上具有站点管理员权限的用户提供组织所有者权限,或者为组织中的任何用户提供组织所有者权限。 你必须指定用户和/或组织。 ghe-org-admin-promote 命令始终会在运行前要求确认,除非使用 -y 标志绕过确认过程。

你可将以下选项与实用程序配合使用:

  • -u 标志指定用户名。 使用此标志可为特定用户提供组织所有者权限。 省略 -u 标志会将所有站点管理员提升为指定组织的所有者。
  • -o 标志指定组织。 使用此标志可提供特定组织中的所有者权限。 省略 -o 标志会将所有组织中的所有者权限授予指定的站点管理员。
  • -a 标志会将所有组织中的所有者权限授予所有站点管理员。
  • -y 标志可绕过手动确认。

此实用程序无法将非站点管理员升级为所有组织的所有者。 可以使用 ghe-user-promote 将普通用户帐户提升为站点管理员。

将特定组织中的组织所有者权限授予特定的站点管理员

ghe-org-admin-promote -u USERNAME -o ORGANIZATION

将所有组织中的组织所有者权限授予特定的站点管理员

ghe-org-admin-promote -u USERNAME

将特定组织中的组织所有者权限授予所有站点管理员

ghe-org-admin-promote -o ORGANIZATION

将所有组织中的组织所有者权限授予所有站点管理员

ghe-org-admin-promote -a

ghe-reactivate-admin-login

使用此命令可以在帐户锁定后立即解锁管理控制台。 要配置 你的 GitHub Enterprise Server 实例 的身份验证策略,请参阅“配置速率限制”。

ghe-reactivate-admin-login

ghe-saml-mapping-csv

借助此实用工具,管理员便可以输出或更新实例上的用户的 SAML NameID 映射。 该实用工具可以输出其中列出了所有现有映射的 CSV 文件。 你还可以编辑生成的文件,然后使用实用工具从文件分配新映射,从而更新实例上的用户的映射。

若要输出包含实例上所有用户 SAML NameID 映射列表的 CSV 文件,请运行以下命令。

ghe-saml-mapping-csv -d

默认情况下,实用工具会将文件写入到 /data/user/tmp

如果计划更新映射,为确保实用工具可访问该文件,建议将文件保留在默认位置。

若要准备更新映射,请编辑文件并进行所需更改。 若要查看使用已编辑 CSV 文件中的新值更新映射的结果,请执行试运行。 运行以下命令,将 /PATH/TO/FILE 替换为已编辑文件的实际路径。

ghe-saml-mapping-csv -u -n -f /PATH/TO/FILE

若要使用文件中的新值更新实例上的 SAML 映射,请运行以下命令,将 /PATH/TO/FILE 替换为已编辑文件的实际路径。

ghe-saml-mapping-csv -u -f /PATH/TO/FILE

ghe-service-list

此实用程序会列出你的设备上已启动或停止(正在运行或等待)的服务。

$ ghe-service-list
active
  - alambic
  - alive
  - aqueduct-lite
  - authzd
  - babeld
  - codeload
  - consul, process 17114
  - consul-template, process 19493
  - driftwood
  - elasticsearch
  - enterprise-manage-unicorn, process 9359
  - ghe-user-disk, process 2545
  - git-daemon
  - github-env
  - github-gitauth
  - github-resqued
  - github-stream-processors
  - github-timerd
  - github-unicorn
  - gitrpcd
  - governor
  - gpgverify
  - grafana-server, process 19314
  - graphite-web, process 20189
  - hookshot-go
  - kafka-lite
  - kredz
  - lfs-server
  - mail-replies
  - memcached
  - minio
  - mysql
  - nginx
  - nomad, process 19562
  - pages
  - postfix
  - redis
  - spokesd
  - spokes-sweeper
  - svnbridge
  - token-scanning-api
  - token-scanning-backfill-worker
  - token-scanning-hydro-consumer
  - token-scanning-incremental-worker
  - token-scanning-udp-backfill-worker
  - treelights
  - turboscan
  - viewscreen

inactive
  - wireguard

ghe-set-password

此实用工具允许你设置新的 根站点管理员 密码,以便向 管理控制台 进行身份验证。 有关详细信息,请参阅“管理对管理控制台的访问”。

ghe-set-password

ghe-setup-network

使用此实用工具可以配置主网络接口。

若要进入可视模式(该模式将引导你完成网络设置的配置),请执行以下操作:

ghe-setup-network -v

使用 -h 标志表示附加选项。

ghe-ssh-check-host-keys

此实用程序会对照已知泄露的 SSH 主机密钥检查现有的 SSH 主机密钥。

ghe-ssh-check-host-keys

如果发现主机密钥泄露,实用程序会以状态 1 退出并显示以下消息:

> One or more of your SSH host keys were found in the blacklist.
> Please reset your host keys using ghe-ssh-roll-host-keys.

如果未发现主机密钥泄露,实用程序会以状态 0 退出并显示以下消息:

> The SSH host keys were not found in the SSH host key blacklist.
> No additional steps are needed/recommended at this time.

ghe-ssh-roll-host-keys

此实用程序会滚动 SSH 主机密钥并将其替换为新生成的密钥。

$ sudo ghe-ssh-roll-host-keys
Proceed with rolling SSH host keys? This will delete the
existing keys in /etc/ssh/ssh_host_* and generate new ones. [y/N]

# Press 'Y' to confirm deleting, or use the -y switch to bypass this prompt

> SSH host keys have successfully been rolled.

ghe-ssh-weak-fingerprints

此实用程序会返回存储在 GitHub Enterprise 设备上的已知弱 SSH 密钥的报告。 你可以选择批量撤销用户密钥。 此实用程序将报告弱系统密钥,必须在 管理控制台 中手动撤销这些密钥。

# Print a report of weak user and system SSH keys
$ ghe-ssh-weak-fingerprints

# Revoke all weak user keys
$ ghe-ssh-weak-fingerprints --revoke

ghe-ssl-acme

此实用程序允许你在 GitHub Enterprise 设备上安装 Let's Encrypt 证书。 有关详细信息,请参阅“配置 TLS”。

可以使用 -x 标志来删除 ACME 配置。

ghe-ssl-acme -e

ghe-ssl-ca-certificate-install

此实用程序允许你在 GitHub Enterprise 服务器上安装自定义根 CA 证书。 证书必须采用 PEM 格式。 此外,如果证书提供者在一个文件中包含多个 CA 证书,则必须将其拆分到多个单独文件中,随后再将这些文件逐个传递到 ghe-ssl-ca-certificate-install

运行此实用程序可添加证书链进行 S/MIME 提交签名验证。 有关详细信息,请参阅“关于提交签名验证”。

如果 你的 GitHub Enterprise Server 实例无法连接到另一台服务器的原因是后者使用自签名 SSL 证书或没有为其提供必要 CA 包的 SSL 证书,请运行此实用程序。 确认这一点的一种方法是从 你的 GitHub Enterprise Server 实例运行 openssl s_client -connect host:port -verify 0 -CApath /etc/ssl/certs。 如果可以验证远程服务器的 SSL 证书,SSL-Session 的返回代码应为 0,如下所示。

SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES128-SHA
    Session-ID: C794EBCC3CBC10F747C9AFC029C03C1048FC99CFC34D13D7444E0F267C58DF4C
    Session-ID-ctx:
    Master-Key: 02A7C47CFD6EEC87D3C710E9DD87390E04EF82DDD7514AE03127D5DC1945FC0CAEFB5395791AEA598667EFA61B9EA8C5
    Key-Arg   : None
    Start Time: 1394581597
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)

另一方面,如果无法验证远程服务器的 SSL 证书,SSL-Session 的返回代码应为非零值:

SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES128-SHA
    Session-ID: 82CB288051A6DB66094C50A69CF1292AEE7E54C6B01B659B98AB336F8C33863E
    Session-ID-ctx:
    Master-Key: 01B025B2F764043A27919A8D1355AAECD8844FF0831B1D664042334790574A6F4025BAB085D4ED71D71AAB3091B849E5
    Key-Arg   : None
    Start Time: 1394581782
    Timeout   : 300 (sec)
    Verify return code: 27 (certificate not trusted)

你可以将以下附加选项与实用程序结合使用:

  • -r 标志允许你卸载 CA 证书。
  • -h 标志可显示更多用法信息。
ghe-ssl-ca-certificate-install -c CERTIFICATE_PATH

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

Shell
ghe-config-apply

ghe-ssl-certificate-setup

此实用工具允许你更新 你的 GitHub Enterprise Server 实例的 SSL 证书。

如需获取关于此命令的详细信息或附加选项,请使用 -h 标志。

/usr/local/share/enterprise/ghe-ssl-certificate-setup

ghe-ssl-generate-csr

此实用程序允许你生成可与商业或私有证书颁发机构共享的私钥和证书签名请求 (CSR),以获取可与你的实例配合使用的有效证书。 有关详细信息,请参阅“配置 TLS”。

如需获取关于此命令的详细信息或附加选项,请使用 -h 标志。

ghe-ssl-generate-csr

ghe-storage-extend

某些平台需要使用此脚本扩展用户量。 有关详细信息,请参阅“增加存储容量”。

ghe-storage-extend

ghe-version

此实用工具会打印 你的 GitHub Enterprise Server 实例的版本、平台和内部版本号。

ghe-version

ghe-webhook-logs

此实用程序会返回 web 挂钩交付日志,供管理员审查和确定任何问题。

ghe-webhook-logs

显示过去一天所有失败的挂钩交付:

ghe-webhook-logs -f -a YYYY-MM-DD

日期格式应为 YYYY-MM-DDYYYY-MM-DD HH:MM:SSYYYY-MM-DD HH:MM:SS (+/-) HH:M

显示交付的完整挂钩有效负载、结果以及任何异常:

ghe-webhook-logs -g DELIVERY_GUID

群集

ghe-cluster-balance

使用此实用工具,可通过检查群集分配的状态,然后调整有问题的分配,从而在群集节点上强制实现均衡分配。 有关详细信息,请参阅“重新均衡群集工作负荷”。

输出可均衡的作业及其关联的分配的列表:

ghe-cluster-balance status

输出某个给定作业或以逗号分隔的作业列表的分配计数:

ghe-cluster-balance -j JOB

为某个给定作业或以逗号分隔的作业列表重新均衡有问题的分配:

ghe-cluster-balance rebalance -j JOB

可以将以下标志与 ghe-cluster-balance rebalance 一起使用。

标志描述
-j/--job-names指定要重新均衡的作业。 接受作业名称或以逗号分隔的名称列表。
-n/--dry-run输出实用工具将运行的 Nomad 操作,而不实际运行这些操作。 可与 -j/--job-name 结合使用。
-y/--yes跳过用户提示。
w/--workers指定要停止的、等待重新分配完成的并行作业的最大数目。 默认值为 4。
-t/--timeout指定替换作业时等待一项停止的分配的秒数。 默认等待 300 秒。

输出给定的 shell 的完成脚本:

ghe-cluster-balance completion

显示实用工具和任何有效子命令的简短说明:

ghe-cluster-balance help

ghe-cluster-maintenance

使用 ghe-cluster-maintenance 实用工具,可以为群集中的每个节点设置或取消设置维护模式。

$ ghe-cluster-maintenance -h
# Shows options
$ ghe-cluster-maintenance -q
# Queries the current mode
$ ghe-cluster-maintenance -s
# Sets maintenance mode
$ ghe-cluster-maintenance -s "MESSAGE"
# Sets maintenance mode with a custom message
$ ghe-cluster-maintenance -m "MESSAGE"
# Updates the custom message
$ ghe-cluster-maintenance -u
# Unsets maintenance mode

ghe-cluster-repl-bootstrap

此实用工具将高可用性复制配置为一组辅助群集节点。 有关详细信息,请参阅“为群集配置高可用性复制”。

ghe-cluster-repl-bootstrap

ghe-cluster-repl-teardown

对于高可用性配置中的群集 ,此实用工具禁用向副本节点的复制。 有关详细信息,请参阅“为群集配置高可用性复制”。

ghe-cluster-repl-teardown

ghe-cluster-status

在 GitHub Enterprise Server 的集群部署中检查节点和服务的运行状况。

ghe-cluster-status

ghe-cluster-support-bundle

此实用程序创建的支持包 tarball 包含采用 Geo-replication 或集群配置的各个节点中的重要日志。

默认情况下,该命令在 /tmp 中创建 tarball,但也可以使用它将 tarball catSTDOUT,以通过 SSH 轻松进行流式传输。 在 Web UI 未响应或从 /setup/support 下载支持包失败的情况下,可以使用此方法。 如果要生成包含旧日志的 extended 捆绑,则必须使用此命令。 你还可以使用此命令将集群支持包直接上传到 GitHub Enterprise Support。

要创建标准捆绑包:

ssh -p 122 admin@HOSTNAME -- 'ghe-cluster-support-bundle -o' > cluster-support-bundle.tgz

创建包含过去 2 天数据的标准捆绑包:

ssh -p 122 admin@HOSTNAME -- "ghe-cluster-support-bundle -p 2days  -o" > support-bundle.tgz

创建包含过去 8 天数据的扩展捆绑包:

ssh -p 122 admin@HOSTNAME -- ghe-cluster-support-bundle -x -o' > cluster-support-bundle.tgz

要将捆绑包发送至 GitHub 支持:

ssh -p 122 admin@HOSTNAME -- 'ghe-cluster-support-bundle -u'

要将捆绑包发送至 GitHub 支持 并关联捆绑包与事件单:

ssh -p 122 admin@HOSTNAME -- 'ghe-cluster-support-bundle -t TICKET_ID'

ghe-cluster-failover

使用 ghe-cluster-failover 实用工具,可以故障转移到副本群集。 有关详细信息,请参阅“发起到副本群集的故障转移”。

ghe-cluster-failover

ghe-dpages

此实用程序可用于管理分配的 GitHub Pages 服务器。

ghe-dpages

要显示仓库位置和健康状态摘要:

ghe-dpages status

要在撤出集群节点之前撤出 GitHub Pages 存储服务:

ghe-dpages evacuate pages-server-UUID

ghe-remove-node

该实用程序从群集中删除节点。 如果要替换节点,在设置替换节点后,可以使用此命令使旧节点脱机。 有关详细信息,请参阅“替换集群节点”。

必须从群集中的主 MySQL 节点运行此命令,该节点通常是群集配置文件 (cluster.conf) 中指定为 mysql-master 的节点。 可以使用此命令删除任何节点,但 mysql-masterredis-master 节点除外。 有关详细信息,请参阅“初始化集群”。

ghe-remove-node HOSTNAME

该命令执行下列操作:

  • 从节点上运行的任何数据服务中撤出数据,以便群集中的其余节点包含数据的副本
  • 在配置中将节点标记为脱机,将此更改应用于群集中的其余节点,并停止路由到该节点的流量

可以使用以下标志运行该命令。

标记说明
-ne/--no-evacuate跳过数据服务的撤出(警告:可能导致数据丢失)。
-v/--verbose将附加信息打印到控制台。
-h/--help显示命令的帮助文本。

注意:

  • 此命令只能用于从群集配置中移除节点。 它不能用于从高可用性配置中移除节点。
  • 此命令不支持并行执行。 若要移除多个节点,必须等待此命令完成后再对另一个节点运行该命令。

ghe-spokesctl

使用此实用程序可管理分布式 Git 服务器上存储库的复制。

ghe-spokesctl

显示存储库所在的服务器:

ghe-spokesctl routes

要撤出集群节点上的存储服务:

ghe-spokesctl server set evacuating git-server-UUID

ghe-storage

此实用程序允许你在撤出集群节点之前撤出所有存储服务。

ghe-storage evacuate storage-server-UUID

nes

使用此实用工具可利用 Node Eligibility Service 监视群集节点的运行状况。 Node Eligibility Service 默认为禁用状态。 有关详细信息,请参阅“使用节点资格服务监视群集节点的运行状况”。

查看群集节点的运行状况:

nes get-cluster-health

验证 TTL 设置:

nes get-node-ttl all

设置 fail 状态的 TTL(以分钟为单位):

nes set-node-ttl fail MINUTES

fail 状态的 TTL 必须大于 warn 状态的 TTL。

设置 warn 状态的 TTL(以分钟为单位):

nes set-node-ttl warn TIME

查看 Node Eligibility Service 是否可以在主机名为 HOSTNAME 的节点脱机时执行管理操作:

nes get-node-adminaction HOSTNAME

让 Node Eligibility Service 能够在主机名为 HOSTNAME 的节点脱机时自动执行管理操作:

nes set-node-adminaction approved HOSTNAME

撤销 Node Eligibility Service 的使主机名为 HOSTNAME 的节点脱机的功能:

nes set-node-adminaction approved HOSTNAME

手动更新节点重新添加到群集的资格:

nes set-node-eligibility eligible HOSTNAME

Git

ghe-btop

当前 Git 操作的类 top 接口。

ghe-btop [ <port number> | --help | --usage ]

ghe-governor

此工具有助于分析 Git 流量。 它查询位于 /data/user/gitmon 下的 Governor 数据文件。 GitHub 为每个文件保存一小时的数据,保留两周。 有关详细信息,请参阅 GitHub Community 中的使用 Governor 分析 Git 流量

ghe-governor <subcommand> <column> [options]
ghe-governor -h
Usage: ghe-governor [-h] <subcommand> args

OPTIONS:
  -h | --help        Show this message.

Valid subcommands are:
  aggregate              Find the top (n) groups of queries for a grouping function and metric
  health                 Summarize all recent activity on one or more servers
  top                    Find the top (n) queries for a given metric
  dump                   Dump individual operations
  test-quotas            Check quota information

Try ghe-governor <subcommand> --help for more information on the arguments each subcommand takes.

ghe-repo

此实用程序允许你切换到存储库的目录并以 git 用户身份打开交互式 shell。 可以通过 git-*git-nw-* 等命令对存储库执行手动检查或维护。

ghe-repo USERNAME/REPONAME

ghe-repo-gc

此实用程序会手动重新打包仓库网络,以优化包存储。 如果仓库较大,运行此命令有助于减小其整体大小。 GitHub Enterprise 会在与仓库网络交互的过程中自动运行此命令。

ghe-repo-gc USERNAME/REPONAME

可以添加可选的 --prune 参数来删除不是从分支、标记或其他任何 ref 引用的不可达 Git 对象。此方法特别适用于立即删除之前泄露的敏感信息。 请参阅“从存储库中删除敏感数据”。

如果使用具有多个节点的部署拓扑,为了防止敏感数据保留在其他节点上并可能在故障转移期间暴露,必须在所有节点上运行该命令。 例如,对于群集配置,可以使用下面的命令。

ghe-cluster-each -r git -- "ghe-repo-gc --prune USERNAME/REPONAME"

GitHub Actions

ghe-actions-check

此实用工具检查 GitHub Actions 的所有服务是否正常运行。 有关详细信息,请参阅“GitHub Actions for GitHub Enterprise Server 使用入门”和“企业 GitHub Actions 故障排除”。

ghe-actions-check

ghe-actions-precheck

此实用工具测试 你的 GitHub Enterprise Server 实例上 GitHub Actions 的 blob 存储配置。 在为实例启用 GitHub Actions 之前,你可以使用该实用工具验证你的存储配置。

有关 GitHub Actions 的配置的详细信息,请参阅“GitHub Actions for GitHub Enterprise Server 使用入门”。

注意: 此实用工具仅适用于使用与存储提供商之间基于凭据的连接的配置。 若要测试 OpenID Connect (OIDC) 配置,请使用 ghe-actions-test-storage-with-oidc

ghe-actions-precheck -p [PROVIDER] -cs ["CONNECTION-STRING"]

如果存储系统配置正确,你将看到以下输出。

All Storage tests passed

ghe-actions-test-storage-with-oidc

此实用程序检查使用 OpenID Connect (OIDC) 时,你的 GitHub Enterprise Server 实例 上 GitHub Actions 的 blob 存储提供程序是否有效。

注意: 此实用程序仅适用于使用 OpenID Connect (OIDC) 配置的配置。 若要测试基于凭证的配置,请使用 ghe-actions-precheck

ghe-actions-test-storage-with-oidc -p [PROVIDER] -cs ["CONNECTION-STRING"]

ghe-actions-stop

此实用工具会停止 你的 GitHub Enterprise Server 实例 上 GitHub Actions 的运行。

注意:

  • 一般来说,只有在已联系支持部门并且他们要求你这样做的时候,才会执行此操作。
  • 在高可用性配置中,在主节点运行此命令。

ghe-actions-start

此实用工具在被停止后,会在 你的 GitHub Enterprise Server 实例 上启动 GitHub Actions。

注意:

  • 一般来说,只有在已联系支持部门并且他们要求你这样做的时候,才会执行此操作。
  • 在高可用性配置中,在主节点运行此命令。

如果系统配置正确,则会看到以下输出:

Actions was enabled!

GitHub Packages

ghe-check-blob-connection

此实用程序检查 你的 GitHub Enterprise Server 实例 上 GitHub Packages 的 blob 存储提供程序是否有效。

ghe-check-blob-connection --help

如果先前配置了连接,则可以通过直接运行命令而不使用任何参数来执行测试。

ghe-check-blob-connection

如果系统配置正确,则会看到以下输出:

All Storage tests passed

高可用性

ghe-repl-promote

此命令禁止现有副本节点上的复制,并使用与原主节点相同的设置将副本节点转换为主节点。 已启用所有复制服务。 有关详细信息,请参阅“发起到副本设备的故障转移”。

推广副本不会自动为现有设备创建副本。 在推广副本后,如有需要,可以设置从新的主设备复制到现有设备及之前的主设备。

ghe-repl-promote

ghe-repl-setup

在现有节点上运行此实用工具,开始启用高可用性配置。 使用 ghe-repl-start 开始复制之前,该实用工具会将节点置于待机模式。 有关详细信息,请参阅“创建高可用性副本”。

运行实用工具后,节点上将执行以下配置。

  • 将创建一个加密的 WireGuard VPN 隧道来实现节点之间的通信。
  • 配置用于复制的数据库服务并启动。
  • 禁用应用程序服务。 尝试通过 HTTP 或 HTTPS、Git 或其他受支持的协议访问副本节点时,会显示“服务器处于复制模式”消息、维护页或错误消息。

运行此实用工具时,将 PRIMARY-NODE-IP 替换为实例主节点的 IP 地址。

ghe-repl-setup PRIMARY-NODE-IP

ghe-repl-start

此实用工具开始复制节点上的所有数据存储。 运行 ghe-repl-setup 后运行此实用工具。 有关详细信息,请参阅“创建高可用性副本”。

ghe-repl-start

ghe-repl-status

此实用工具显示节点上的复制状态,并为每个数据存储的复制流返回 OKWARNINGCRITICAL 状态。 有关详细信息,请参阅“监视高可用性配置”。

  • 如果有复制通道处于 WARNING 状态,命令将停止执行并显示代码 1
  • 如果尚未启动复制,该命令将退出并显示代码 1
  • 如果有通道处于 CRITICAL 状态,命令将停止执行并显示代码 2
  • 输出符合 Nagios 的 check_by_ssh 插件的预期。 有关详细信息,请参阅官方 Nagios 插件页面上的 check_by_ssh 插件。
ghe-repl-status

-v-vv 选项提供关于各数据存储复制状态的更多详细信息。

ghe-repl-status -v

ghe-repl-stop

此命令暂时禁止现有副本节点上所有数据存储的复制。 所有复制服务已停止。 若要恢复复制,可使用 ghe-repl-start

ghe-repl-stop

ghe-repl-teardown

此实用工具完全禁止现有副本节点上的复制,并删除副本配置。 可以从副本节点运行以下命令,但如果无法访问副本节点,也可以从主节点运行该命令。

ghe-repl-teardown

导入和导出

ghe-migrator

ghe-migrator 属于高保真工具,可帮助用户从一个 GitHub 实例迁移到另一个实例。 你可以整合实例或将组织、用户、团队和仓库从 GitHub.com 移至 GitHub Enterprise。

有关详细信息,请参阅有关将数据迁移到企业和从企业迁移数据的指南。

git-import-detect

给定一个 URL,检测哪种类型的源控制管理系统位于另一端。 在手动导入过程中,此信息很可能是已知的,但在自动执行的脚本中非常有用。

git-import-detect

git-import-hg-raw

此实用程序可将 Mercurial 仓库导入至此 Git 仓库。 有关详细信息,请参阅“借助管理 shell 从其他版本控制系统导入”。

git-import-hg-raw

git-import-svn-raw

此实用程序可将 Subversion 历史记录和文件数据导入至 Git 分支。 这属于直接复制树,会忽略任何主干或分支差异。 有关详细信息,请参阅“借助管理 shell 从其他版本控制系统导入”。

git-import-svn-raw

git-import-tfs-raw

此实用程序可从 Team Foundation Version Control (TFVC) 导入。 有关详细信息,请参阅“借助管理 shell 从其他版本控制系统导入”。

git-import-tfs-raw

git-import-rewrite

此实用程序可重写导入的仓库。 这样,你将有机会重命名作者,对于 Subversion 和 TFVC,可基于文件夹生成 Git 分支。 有关详细信息,请参阅“借助管理 shell 从其他版本控制系统导入”。

git-import-rewrite

许可证

ghe-license

此实用程序允许与当前活动许可证或新许可证进行交互,而无需先导入它们。 也可以使用 --apply 直接申请许可证,以使更改生效。 使用 ghe-license 实用程序应用更改可避免配置运行,并且只会重启受影响的服务。

可以使用 ghe-license -h 查看可能的命令和标志。

或者,可以使用 REST API 或者 GitHub CLI 管理许可证。 请参阅“适用于管理 GitHub Enterprise Server 的 REST API 终结点”和“使用 GitHub CLI 管理实例”。

显示许可证信息。 或者,将 -j 标志设置 JSON 格式。

ghe-license info
# "advanced_security_enabled" : true
# "advanced_security_seats" : 0
# "cluster_support" : false
# "company" : "GitHub"
# "croquet_support" : true
# "custom_terms" : true
# "evaluation" : false
# "expire_at" : "2025-01-01T23:59:59-08:00"
# "insights_enabled" : true
# "insights_expire_at" : "2025-01-01T23:59:59.999-08:00"
# "learning_lab_evaluation_expires" : "2023-01-01T23:59:59.000-08:00"
# "learning_lab_seats" : 100
# "perpetual" : false
# "reference_number" : "123456"
# "seats" : 0
# "ssh_allowed" : true
# "support_key" : null
# "unlimited_seating" : true

检查许可证。

ghe-license check
# License is valid.

所有命令都在现有许可证上执行。 但是,也可以使用 --pipe 从 STDOUT 提供许可证。

cat license | ghe-license import --pipe
# License imported at /data/user/common/enterprise.ghl.
# License synchronized.

还可以通过向 GHE_LICENSE_FILE 环境变量分配文件路径来提供许可证。

GHE_LICENSE_FILE=/path/license ghe-license import
# License imported at /data/user/common/enterprise.ghl.
# License synchronized.

安全性

ghe-find-insecure-git-operations

此实用工具搜索实例的日志并通过 SSH 识别使用不安全算法或哈希函数(包括 DSA、RSA-SHA-1、HMAC-SHA-1 和 CBC 密码)的 Git 操作。 可以使用输出来支持每个客户端转换到更安全的 SSH 连接。 有关详细信息,请参阅“配置与实例的 SSH 连接”和 the GitHub Blog

ghe-find-insecure-git-operations

支持

ghe-diagnostics

此实用程序会执行各项检查并收集关于安装的信息,你可以将此类信息发送给支持团队,以帮助诊断你遇到的问题。

目前,此实用程序的输出与下载 管理控制台 中的诊断信息类似,但会逐渐增加一些 Web UI 中未提供的其他改进。 有关详细信息,请参阅“向 GitHub 支持提供数据”。

ghe-diagnostics

ghe-support-bundle

注意:如果 你的 GitHub Enterprise Server 实例 采用异地复制配置,或者实例是群集,则应使用 ghe-cluster-support-bundle 命令检索支持包。 有关详细信息,请参阅“命令行实用程序”。

此实用程序会创建包含实例中重要日志的支持捆绑 tarball。

默认情况下,该命令在 /tmp 中创建 tarball,但也可以使用它将 tarball catSTDOUT,以通过 SSH 轻松进行流式传输。 在 Web UI 未响应或从 /setup/support 下载支持包失败的情况下,可以使用此方法。 如果要生成包含旧日志的 extended 捆绑,则必须使用此命令。 你还可以使用此命令将支持包直接上传到 GitHub Enterprise Support。

要创建标准捆绑包:

ssh -p 122 admin@HOSTNAME -- 'ghe-support-bundle -o' > support-bundle.tgz

创建包含过去 2 天数据的标准捆绑包:

ssh -p 122 admin@HOSTNAME -- "ghe-support-bundle -p 2days  -o" > support-bundle.tgz

创建包含过去 8 天数据的扩展捆绑包:

ssh -p 122 admin@HOSTNAME -- 'ghe-support-bundle -x -o' > support-bundle.tgz

要将捆绑包发送至 GitHub 支持:

ssh -p 122 admin@HOSTNAME -- 'ghe-support-bundle -u'

要将捆绑包发送至 GitHub 支持 并关联捆绑包与事件单:

ssh -p 122 admin@HOSTNAME -- 'ghe-support-bundle -t TICKET_ID'

ghe-support-upload

此实用程序会将你的设备中的信息发送到 GitHub Enterprise Support。 可以指定本地文件,或通过 STDIN 提供最大 100MB 的数据流。 可以选择将上传的数据与支持事件单相关联。

要将文件发送至 GitHub 支持 并关联文件与事件单:

ghe-support-upload -f FILE_PATH -t TICKET_ID

通过 STDIN 上传数据并关联数据与票证:

ghe-repl-status -vv | ghe-support-upload -t TICKET_ID -d "Verbose Replication Status"

在此示例中,ghe-repl-status -vv 从副本设备发送详细状态信息。 应将 ghe-repl-status -vv 替换为要传输到 STDIN 的特定数据,并将 Verbose Replication Status 替换为数据的简单说明。 一般来说,只有在已联系支持部门并且他们要求你这样做的时候,才会执行此操作。

升级 GitHub Enterprise Server

ghe-check-background-upgrade-jobs

在升级到某个功能版期间,此实用工具会显示 你的 GitHub Enterprise Server 实例 上的后台作业状态。 如果正在运行连续升级,则应使用此实用工具检查所有后台作业是否已完成,然后再继续下一个升级。

ghe-check-background-upgrade-jobs

ghe-migrations

在升级到某个功能版本期间,此实用工具会显示 你的 GitHub Enterprise Server 实例 上正在进行的数据库迁移的状态。 输出包括迁移的版本标识符、迁移名称、迁移状态和迁移的当前持续时间。

显示迁移列表:

ghe-migrations

实用工具默认输出一个包含 10 行的表。 调整表格的高度(以行为单位):

ghe-migrations -height LINES

可视化工具默认为每秒刷新一次。 指定可视化工具的刷新持续时间(以秒为单位):

ghe-migrations -refresh_rate SECONDS

ghe-update-check

此实用程序将检查 GitHub Enterprise 是否有新的补丁版本可用。 如果有新的补丁版本,并且实例中有可用空间,系统将下载此包。 默认情况下,包会保存到 /var/lib/ghe-updates。 然后,管理员可以执行升级

包含下载状态的文件位于 /var/lib/ghe-updates/ghe-update-check.status。

要查看最新的 GitHub Enterprise 版本,请使用 -i 开关。

ssh -p 122 admin@HOSTNAME -- 'ghe-update-check'

ghe-upgrade

此实用程序会安装或验证升级包。 如果升级失败或中断,你还可以使用此实用程序回滚补丁版本。 有关详细信息,请参阅“升级过程概述”。

要验证升级包:

ghe-upgrade --verify UPGRADE-PACKAGE-FILENAME

要安装升级包:

ghe-upgrade UPGRADE-PACKAGE-FILENAME

回滚升级时,必须使用一个带 .pkg 扩展的升级包文件。 不支持带 .hpkg 扩展的热补丁包文件。

ghe-upgrade --allow-patch-rollback EARLIER-RELEASE-UPGRADE-PACKAGE.pkg

运行命令后需要重启。 回滚不会影响数据分区,因为迁移不是在补丁版本上运行的。

ghe-upgrade-scheduler

此实用程序可以管理已排定的升级包安装。 你可以显示、新建或移除已排定的安装。 你必须使用 cron 表达式创建日程。 有关详细信息,请参阅 Cron Wikipedia 条目

ghe-upgrade-scheduler 实用工具最适合用于计划热补丁升级,在大多数情况下不需要维护模式或重启。 此实用工具不适用于完整包升级,需要管理员手动设置维护模式、重启实例和取消设置维护模式。 有关不同升级类型的详细信息,请参阅“使用升级包升级

要安排新的包安装:

ghe-upgrade-scheduler -c "0 2 15 12 *" UPGRADE-PACKAGE-FILENAME

要显示已安排的包安装:

$ ghe-upgrade-scheduler -s UPGRADE PACKAGE FILENAME
> 0 2 15 12 * /usr/local/bin/ghe-upgrade -y -s UPGRADE-PACKAGE-FILENAME > /data/user/common/UPGRADE-PACKAGE-FILENAME.log 2>&1

要删除已安排的包安装:

ghe-upgrade-scheduler -r UPGRADE PACKAGE FILENAME

用户管理

ghe-license usage

此实用程序可按 JSON 格式导出安装用户列表。 如果你的实例连接至 GitHub Enterprise Cloud,GitHub Enterprise Server 将使用此信息向 GitHub Enterprise Cloud 报告许可信息。 有关详细信息,请参阅“Enabling GitHub Connect for GitHub.com”。

默认情况下,生成的 JSON 文件中的用户列表为加密格式。 通过 ghe-license --help 查看可选标志 。

ghe-license usage

ghe-org-membership-update

此实用程序将对你的实例中的所有成员强制实施默认的组织成员关系可见性设置。 有关详细信息,请参阅“配置组织成员关系的可见性”。 设置选项为 publicprivate

ghe-org-membership-update --visibility=SETTING

ghe-user-csv

此实用程序可将所有安装用户列表导出为 CSV 格式。 CSV 文件包含电子邮件地址、用户所属类型(例如管理员、用户)、用户拥有的存储库数量、SSH 密钥数量、组织成员关系数量、上次登录的 IP 地址等。有关更多选项,请使用 -h 标志。

ghe-user-csv -o > users.csv

ghe-user-demote

此实用程序会将指定用户从管理员状态降级为普通用户状态。 建议使用 Web UI 执行此操作,但在 ghe-user-promote 实用程序运行出错并且需要再次通过 CLI 将用户降级的情况下提供此实用程序。

ghe-user-demote USERNAME

ghe-user-promote

此实用程序会将指定用户帐户升级为站点管理员。

ghe-user-promote USERNAME

ghe-user-suspend

此实用程序会挂起指定用户,避免他们登录、推送或从仓库拉取。

ghe-user-suspend USERNAME

ghe-user-unsuspend

此实用程序会取消挂起指定用户,向他们授予登录、推送以及从仓库拉取的权限。

ghe-user-unsuspend USERNAME