在 github 文档和 SO 上都找不到任何东西。但我想知道是否可以有一个http://foo.github.com
名为的私有存储库foo
,只有一个可以访问foo
存储库本身的人才能访问它。
我记得读过一些关于 github 页面总是公开的东西,但似乎再也找不到了。
令人惊讶的是,我似乎也找不到其他人问这个问题。
在 github 文档和 SO 上都找不到任何东西。但我想知道是否可以有一个http://foo.github.com
名为的私有存储库foo
,只有一个可以访问foo
存储库本身的人才能访问它。
我记得读过一些关于 github 页面总是公开的东西,但似乎再也找不到了。
令人惊讶的是,我似乎也找不到其他人问这个问题。
我已经向 Github 提出了支持票,并得到了确认所有页面都是公开的事实的回复。我现在要求他们在 help.github.com/pages 中添加注释。
所有项目存储库都已准备好使用生成器进行发布。但是,请注意,私有存储库将发布公共页面。
所以不,目前无法从私有 GitHub 存储库创建私有 GitHub 页面。
编辑:
对于某些可能有用的情况,一种解决方法是简单地将 repo 重命名为 GitHub 页面格式以外的其他内容,同时您希望它是私有的(例如在开发阶段),并且在准备好将其公开时,然后更正名称。显然,如果您正在寻找一种方法来发布具有身份验证的页面,这仍然无济于事,但如果您只想在 GH 页面项目正在进行时隐藏它,这可能会有所帮助。
或者,GitHubber @benbalter有一个名为Jekyll Auth的项目用于此类用途。Jekyll Auth 为 jekyll 项目(包括 GitHub 页面)提供了一个基本的身份验证包装器。请参阅 repo 的 README以供使用。
page.github.com确实提到:
Github 页面是免费托管的,可以通过我们的网站轻松发布,
没有提到访问控制。
GitHub 页面帮助也没有提及任何 ACL 。
它们最好在gh-pages 分支中进行管理,并且可以在它们自己的子模块中进行管理。
但同样,一旦 GitHub 发布,在可见性方面没有任何限制。
有一篇文章介绍了如何在动态加载静态内容之前请求 oAuth 授权:
(archive.org) 使用私有存储库中的 JSON 后端保护在 Github 页面上运行的站点(原始文章成为 404)
内容应存储在一个秘密的 GitHub 存储库中,查看者对其具有读取权限。GitHub 页面仅存储提供服务的 JS 代码。
如上所述,Github 页面不支持该功能。当我们的团队决定在内部和私下托管项目文档(静态 HTML)时,我遇到了同样的问题。
我最终创建了一个服务https://www.privatehub.cloud它基本上是一个带有 Github OAuth 身份验证的简单代理服务器,因此它仅返回具有适当 MIME 类型的 GitHub 存储库内容。按照设计,只有有权访问的人foo
才能foo
看到https://bar-foo.privatehub.cloud
. 从功能的角度来看,您可以将其视为具有内置身份验证的简化 GitHub 页面。
不幸的是,Github OAuth 不允许请求read-only
访问私有存储库,因此服务器需要完全访问权限(显然,它不会向您的存储库写入任何内容)。由于 GitHub API 仅允许检索 1 Mb 以下的文件,因此该服务无法返回更大的文件。然而,我发现该服务非常适合用于内部文档或网站临时版本的小型项目。
GitHub Enterprise Cloud 客户终于可以做到这一点:GitHub Pages 的访问控制。
要在页面上启用访问控制,请导航到您的存储库设置,然后单击下拉菜单以在您的站点的公共和私人可见性之间切换。
2021 年 1 月:GitHub Enterprise 现在可以做到这一点(所以:对于 github.com 来说还没有)。
看:
GitHub Pages 现在为您提供限制访问的选项,使该站点仅对有权访问发布该页面的存储库的用户可见。
通过访问控制,您可以使用 GitHub Pages 在整个企业中发布和共享内部文档和知识。
作为此版本的一部分,我们将引入以下功能:
- 存储库管理员可以选择 GitHub Pages 站点是公开可见还是仅限有权访问存储库的用户查看。
- 私有和内部存储库都支持私有可见性。借助内部存储库,您企业中的每个人都可以使用与登录 github.com 相同的凭据查看页面
- 组织管理员可以配置成员可以为其主页选择的可见性选项。例如,您可以强制您的成员只能私下发布内容。
此功能今天在 GitHub Enterprise Cloud 上普遍可用。
要在页面上启用访问控制,请导航到您的存储库设置,然后单击下拉菜单以在您的站点的公共和私人可见性之间切换。
如果您在私人回购中按 admin 并向下滚动到关于页面的部分,它会写道它将是公开的。稍后我会检查 .htaccess 控制或类似的控制是否可行,但我对此不抱太大希望。
作为替代方案,目前可以使用 GitLab 而不是 GitHub 完全按照 OP 的要求去做。有关功能GitLab 页面访问控制,请参阅文档。由于 GitHub 不支持此功能,如果将项目移植到 GitLab 不是问题,这是一个很好的解决方法。
这个 GitHub 应用程序:https ://github.com/apps/priv-page允许用户为其私有存储库拥有私有页面。
您可以在存储库中托管密码,然后将页面隐藏在隐藏地址后面,该地址源自该密码。这不是一个非常安全的方法,但它很简单。