私有 Github 存储库的私有页面

Posted

技术标签:

【中文标题】私有 Github 存储库的私有页面【英文标题】:Private pages for a private Github repo 【发布时间】:2012-05-31 15:53:46 【问题描述】:

在 github 文档和 SO 上都找不到任何内容。但我想知道是否有一个名为 foo 的私有存储库的 http://foo.github.com 可以访问,只有一个可以访问 foo 存储库本身的人。

我记得读过一些关于 github 页面总是公开但似乎再也找不到的东西。

令人惊讶的是,我似乎也找不到其他人问这个问题。

【问题讨论】:

我想没有很多人使用 Github 来托管私人回购。或者至少,其中很少有人使用 gh-pages。 我认为现在正确答案应该是***.com/a/54340540/1168342 private pages for enterprise users 现在在 github roadmap 【参考方案1】:

我已经针对 Github 提出了支持请求,并得到了确认所有页面都是公开的事实的回复。我现在要求他们在 help.github.com/pages 中添加注释。

【讨论】:

您的页面回购是否必须公开才能使 GitHub 页面正常工作? @Dennis:不,它没有——你的仓库可以是私有的。但是已发布的页面将是公开的,并且 GitHub 没有内置方法来限制查看访问权限,只允许该私有仓库上的贡献者查看它们。 仅供参考,可以非常清楚地看到here // ,访问控制对于 Github 来说是一个非常有趣的问题。我喜欢这引起了一些关注,@kashyap!谢谢。 添加到上面的@Derek Adair cmets。该网站说:“警告:GitHub Pages 网站在 Internet 上是公开可用的,即使它们的存储库是私有的。如果您的 Page 存储库中有敏感数据,您可能需要在发布之前将其删除。”【参考方案2】:

根据GitHub Pages documentation:

所有项目存储库都已准备好使用生成器进行发布。 但是,请注意,私有存储库将发布公开的页面。

所以不,目前无法从私有 GitHub 存储库创建私有 GitHub 页面。

编辑:

一个简单的解决方法

一些 可能有用的解决方法是在您希望它是私有的(例如在开发阶段)以及何时将 repo 重命名为 GitHub 页面格式以外的其他内容准备公开,然后更正名称。显然,如果您正在寻找一种方法来发布具有身份验证的页面,那么这仍然无济于事,但如果您只想在 GH 页面项目正在进行时隐藏它,这可能会有所帮助。

Jekyll 的实际 Auth Wrapper(GitHub 页面)

另外,有一个名为Jekyll Auth 的项目是GitHubber @benbalter 用于此类用途的。 Jekyll Auth 为 jekyll 项目(包括 GitHub 页面)提供了一个基本的身份验证包装器。 See the repo's README 供使用。

【讨论】:

第一个链接看起来很旧。 help.github.com/articles/what-is-github-pages 现在有类似的警告。【参考方案3】:

许多答案已经过时(Microsoft 之前收购/免费私人回购)。这是在宣布免费私人回购之后写的。

Github 页面不适用于个人的免费私人存储库,如存储库设置所示:

2020(现在最基本的计划是“团队”):

通知

所有页面都是公开的,即使您升级了。升级只启用私有存储库上的页面功能,就像它启用其他功能一样。 Pages 功能是公开的静态网络托管。

【讨论】:

这太糟糕了。广告花里胡哨地宣传私人回购的免费可用性,但他们大量削减了它们的功能。 它说:警告:GitHub Pages 站点在 Internet 上是公开的,即使它们的存储库是私有的或内部的。如果您网站的存储库中有敏感数据,您可能希望在发布之前将其删除。所以这意味着如果 repo 是私有的,页面仍然可见但代码不可见,对吧? @youHaveAlsoBeenABeginner - 我相信这是准确的。该页面将是公开的,而不是代码。 投反对票,因为注意页面本身仍然是公开的警告非常重要【参考方案4】:

page.github.com 确实提到:

Github 页面是免费托管的,并且可以通过我们的网站轻松发布,

从来没有提到访问控制。

GitHub page help 也没有提及任何 ACL。 它们最好在gh-pages branch 中进行管理,并且可以在their own submodule 中进行管理。 但同样,一旦被 GitHub 发布,在可见性方面没有任何限制。

【讨论】:

确实如此。所有页面都是公开的。我收到了来自 github 的回复(在支持票上),确认了这一点。【参考方案5】:

有一篇文章介绍了如何在动态加载静态内容之前请求 oAuth 授权:

(archive.org) Securing Site That Runs on Github Pages With JSON Backend In Private Repository (original article that became 404)

内容应存储在一个秘密的 GitHub 存储库中,查看者对其具有读取权限。 GitHub 页面仅存储提供服务的 JS 代码。

【讨论】:

这比使用 hasdocs 要好得多,因为您不需要将您的 repo 权限授予不受信任的第三方应用程序。【参考方案6】:

如上所述,Github 页面不支持该功能。当我们的团队决定在内部和私下托管项目文档(静态 html)时,我遇到了同样的问题。

我最终创建了一个服务https://www.privatehub.cloud 它基本上是一个带有 Github OAuth 身份验证的简单代理服务器,因此它只是返回具有适当 MIME 类型的 GitHub 存储库内容。按照设计,只有有权访问foo 的人才能在https://bar-foo.privatehub.cloud 看到foo 的内容。从功能的角度来看,你可以将其视为一个带有内置身份验证的简化 GitHub 页面。

不幸的是,Github OAuth 不允许请求 read-only 访问私有存储库,因此服务器需要完全访问权限(显然,它不会向您的存储库写入任何内容)。由于 GitHub API 仅允许检索 1 Mb 以下的文件,因此该服务无法返回更大的文件。然而,我发现该服务非常适合用于内部文档或网站暂存版本的小型项目。

【讨论】:

注意:此服务现已失效(或可能暂时崩溃)【参考方案7】:

这对于 GitHub Enterprise Cloud 客户终于可以实现了:Access control for GitHub Pages。

要在页面上启用访问控制,请导航到您的存储库 设置,然后单击下拉菜单在公共和 您网站的私密可见性。

【讨论】:

“GitHub Enterprise Cloud”中的“Cloud”在这里很重要!我在公司的 Github Enterprise 实例中找不到此设置。另请参阅github.community/t/access-control-for-github-pages/156911/20 的讨论【参考方案8】:

一月。 2021 年:GitHub Enterprise 现在可以做到这一点(所以:对于 github.com 来说还没有)。 见:

Access control for GitHub Pages

GitHub Pages 现在为您提供限制访问的选项,使该站点仅对有权访问发布该页面的存储库的用户可见。

通过访问控制,您可以使用 GitHub Pages 在整个企业中发布和共享内部文档和知识。

作为此版本的一部分,我们将引入以下功能:

存储库管理员可以选择 GitHub Pages 站点是公开可见还是仅限有权访问存储库的用户查看。 私有和内部存储库都支持私有可见性。借助内部存储库,您企业中的每个人都可以使用登录 github.com 时使用的相同凭据查看主页 组织管理员可以配置成员可以为其主页选择的可见性选项。例如,您可以强制您的成员只能私下发布内容。

今天在 GitHub Enterprise Cloud 上普遍提供此功能。 要在 Pages 上启用访问控制,请导航到您的存储库设置,然后单击下拉菜单以在您的网站的公开和私密可见性之间切换。

【讨论】:

【参考方案9】:

很遗憾现在是 2020 年,我们无法拥有私人 GithubPäges:

【讨论】:

【参考方案10】:

如果您在私人存储库上按管理员并向下滚动到有关页面的部分,它会写道它将是公开的。我稍后会检查是否可以使用 .htaccess 控制或类似方法,但我对此没有太大希望。

【讨论】:

.htaccess 方法不起作用。如果有任何有用的建议,请告诉我:) 我也找不到任何东西。我想这个问题现在已经结束了。【参考方案11】:

此 GitHub 应用程序:https://github.com/apps/priv-page 允许用户为其私有存储库拥有私有页面。

【讨论】:

注意,贡献者 j8r 说“将来可能会关闭此服务”github.com/Priv-Page/privpage/issues/16#issuecomment-950392311【参考方案12】:

作为替代方案,目前可以使用 GitLab 而不是 GitHub 完全按照 OP 的要求执行操作。请参阅文档以了解功能 GitLab Pages access control。由于 GitHub 不支持此功能,如果将项目移植到 GitLab 不是问题,这是一个很好的解决方法。

【讨论】:

【参考方案13】:

您可以在存储库中托管密码,然后将页面隐藏在隐藏地址后面,该地址源自该密码。这不是一个很安全的方法,但是很简单。

Demonstration

【讨论】:

以上是关于私有 Github 存储库的私有页面的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 GitHub Actions 以构建依赖于私有存储库的 Azure 静态 Web 应用程序?

Github Actions 使用 maven 对另一个存储库的私有包注册表进行身份验证

从私有存储库切换到公共存储库,但 github 页面不发布站点

创建 github 存储库的“副本”

使用私有存储库进行构建

将 Github 页面的 URL 更改为私有