Github私有仓库中原始文件的永久链接

10

好的,我已经在其他地方看到过类似的问题,但其中许多问题已经过去多年,并且没有得到令人满意的答案。 Github Raw File - 我可以获得永久链接吗?通过access_token读取Github上私有仓库中文件的原始内容

首先,让我提供我的用例,因为我愿意接受替代解决方案。

我需要能够在Confluence中链接/显示私有github仓库中的Markdown文件(.md)。使用Confluence插件Markdown from url时,只需提供像raw/repo/readme.md?token=XXXXXXX这样的原始url即可实现技术上的工作。问题是通过查看原始链接生成的令牌仅在7天内有效,因此这对于文档来说实际上并不适用,因为显然一周后部分文档将不再可见。正如上面的一个链接和其他几个在线搜索结果中所引用的那样,应该可以生成个人访问令牌并替换令牌,例如raw/repo/readme.md?token=PERSONAL_ACCESS_TOKEN,但我没有发现这种情况。即使在github中授予您的PAT所有权限,尝试通过浏览器或Confluence插件访问url仍会导致404错误。

另外,我还看到了一个带有用户名的示例,例如raw/repo/readme.md?login=USERNAME&token=PERSONAL_ACCESS_TOKEN,但遗憾的是这也会收到404的相同结果。

所以问题是,有人知道如何使用PAT或类似的安全替代方案成功地使其工作吗?我是否错过了可以使其正常工作的url选项?请注意,我不是在寻找其他的confluence插件来实现这一点,我知道有几个,但由于组织安全方面的考虑,在我的情况下这些不是真正的选择。谢谢任何想法。
3个回答

5

从私有存储库下载文件

1. 您需要生成个人访问令牌。

根据GitHub帮助页面:

  1. 单击任何页面右上角的您的个人资料照片,然后单击“设置”
  2. 在左侧边栏中,单击“开发人员设置”
  3. 在左侧边栏中,单击“个人访问令牌”
  4. 选择作用域。要使用令牌从命令行访问存储库,请选择“repo”
  5. 单击“生成新令牌”
  6. 给您的令牌起一个描述性名称

假设您的实际令牌是1234567abcdefg

2. 将令牌嵌入到链接中。

  1. 在GitHub网页上打开文件并单击“原始”。
  2. 复制此原始文件的链接,可能类似于: https:// raw.githubusercontent.com/GITHUB_ACCOUNT/REPOSITORY_NAME/BRANCH_NAME/FILE_NAME.EXTENTION_NAME?token=SOME_NUMBERS_LETTERS
  3. 重新构造链接,如下所示: https:// 1234567abcdefg@raw.githubusercontent.com/GITHUB_ACCOUNT/REPOSITORY_NAME/BRANCH_NAME/FILE_NAME.EXTENTION_NAME

如您所见,“?token=SOME_NUMBERS_LETTERS”已被移除。在“https://”之后插入您从GitHub生成的令牌+ @。

curl -s -O https://1234567abcdefg@raw.githubusercontent.com/GITHUB_ACCOUNT/REPOSITORY_NAME/BRANCH_NAME/FILE_NAME.EXTENTION_NAME

希望这对您有所帮助!

4
这适用于curl,但在浏览器中不起作用。你知道如何让它在那里工作吗?否则我使用的插件无法正确获取文件。@CookiesKush420 - Luiscri
@CookiesKush420 这在浏览器上不起作用吗?如何使其在浏览器中正常运行? - undefined

2
正如您所见,所有私有GitHub存储库的原始链接都需要一个令牌,该令牌在一段时间后会过期。这是因为如果URL被暴露,影响是有限的。您使用的URL中的令牌是针对您的用户特定的,如果它是永久性的,那么即使他们离开组织,某人也可以拿到该令牌并在将来访问该文件。我相信,如果我没记错的话,该令牌还特定于相关的URL。
因此,没有办法使用URL中的令牌来完成此操作。但是,如果您的插件支持基本身份验证,则可以在Authorization头中使用个人访问令牌。我已经进行了测试,它确实有效,并且当然不会向每个用户公开您的令牌。但是,它需要您正在使用的站点代理请求并支持该功能。
您可能希望使用与您的组织相关联的机器或机器人帐户的PAT,以便如果您离开,链接将继续工作。

1
其他人,例如bk2204,也提出了这个建议,
下面是我在PowerShell中访问我的私有GitHub存储库内容的示例
Invoke-RestMethod https://raw.githubusercontent.com/HotCakeX/RepositoryName/main/MyFile.txt -Headers @{"Authorization"="token github_pat_abcdefgh123456789"}

只需要创建一个细粒度的个人访问令牌: https://github.com/settings/tokens?type=beta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接