如何设置 GitHub 私有仓库的无密码验证?

无需密码访问 GitHub 私有仓库的多种方法

作为程序员,重复执行相同的任务令人感到厌烦和痛苦,不是吗?

其中一个重复的任务就是与 GitHub 的私有仓库进行交互。你肯定知道我在说什么。你可能正在寻找一个解决方案,并因此发现了这篇文章。读完这篇文章,你就不需要再继续搜索了。

本文将探讨如何无需密码访问 GitHub 私有仓库。我们马上开始吧。

通常,有两种方式可以访问 GitHub 仓库:HTTPS 和 SSH。大多数人使用 HTTPS。但事实上,使用 HTTPS 方法克隆私有仓库并非最优选择。

访问操作包括克隆、推送、拉取等等,所有与远程更新仓库相关的操作。

访问公共仓库时不存在身份验证问题。然而,访问私有仓库时需要进行身份验证。有多种方法可以实现这一点。

让我们从最熟悉的方法开始……

使用 HTTPS 访问

你可能已经了解 HTTPS 方法,并且正在寻找替代方案。我们先快速回顾一下如何使用 HTTPS 访问私有仓库。

  • 复制你的私有仓库链接。

GitHub 私有仓库

  • 在你的电脑上打开终端或命令提示符。
  • 粘贴命令 `git clone [链接]` 以克隆私有仓库。
  • 将链接替换为你的私有仓库链接。
  • 系统会要求你进行身份验证。你需要输入你的 GitHub 凭据。
  • 首先,系统会提示你输入 GitHub 用户名。输入你的 GitHub 用户名,然后按回车键。

  • 接下来,需要输入密码。输入你的 GitHub 密码,然后按回车键。

就这样,我们使用 HTTPS 方法成功克隆了私有仓库。现在,你可以更新仓库内容,进行提交,并将更新推送到远程仓库。

你注意到了什么?

它再次要求进行身份验证。

每次与私有仓库交互时都要输入凭据,这难道不是很繁琐吗?

是的,确实如此。

每次与私有仓库交互都需要输入 GitHub 凭据,这非常耗时,并且会降低我们的工作效率。

有多种方法可以解决这个问题。最好的方法之一是使用 SSH。当然,还有其他方法。接下来,我们将逐一探讨这些方法。

.git 配置方法

所有与仓库版本相关的信息都存储在 .git 目录中。这是一个隐藏的文件夹,其中包含一个名为 config 的配置文件,允许我们进行各种设置。但是,通常不推荐直接修改此文件。

可以通过在仓库 URL 中添加用户名和密码来克隆私有仓库,如下所示:

git clone https://<strong>用户名:密码</strong>@github.com/<strong>用户名</strong>/<strong>仓库名称</strong>.git

使用你自己的用户名、密码和仓库名称替换上述占位符。由于我们在 URL 中提供了凭据,系统将不再提示你进行身份验证。

因此,我们可以通过修改仓库配置来实现避免重复身份验证的目标。让我们看一下通过更新 URL 来摆脱重复身份验证的具体步骤。

  • 打开克隆的仓库中的 .git 文件夹。

  • 你会找到一个名为 config 的文件。使用你喜欢的文本编辑器打开它。
  • 你会看到一行包含你的仓库链接,如下所示。

  • 通过添加你的用户名和密码来更新 URL,如上所述。

现在,再次更新仓库中的内容,进行提交,然后推送。

你观察到了什么?

这次,系统不应该要求你提供 GitHub 凭据。因此,我们通过更新仓库配置解决了问题。

你可能已经注意到这种方法并不安全,因为它会暴露我们的凭据。此外,如果你的 GitHub 密码包含 @ 字符,此方法将不起作用。

因此,这种方法存在一些严重缺陷。让我们忽略它,继续讨论下一个方法。

凭据助手(credential.helper)

credential.helper 允许我们将凭据永久存储在 ~/.git-credentials 文件中。

当我们第一次输入凭据时,它会将其存储起来。之后,当我们尝试访问私有仓库时,系统将不再提示提供凭据,除非该凭据已存储在 ~/git-credentials 文件中。这是解决问题的一种方法。让我们看看它是如何工作的。

  • 首先,我们需要激活该选项,使用命令 `git config credential.helper store` 来存储我们的凭据。
  • 激活该选项后,尝试使用用户名和密码访问私有仓库。
  • 输入用户名和密码后,系统会将凭据和你的 GitHub 凭据一起存储在 ~/.git-credentials 文件中,如下所示。

现在,按照相同的步骤再次检查它是否有效:更新、提交和推送。如果你按照上述步骤存储了凭据,我相信系统不会再要求你提供凭据。

一切顺利……

如果只想将凭据保存 4 小时而不是永久保存呢?

credential.helper 提供了临时存储凭据一段时间的方法。我们使用缓存而不是存储来临时存储凭据。

默认情况下,缓存会将凭据存储 15 分钟。15 分钟后,git 将再次要求提供凭据。但是,我们可以使用以下命令更改默认时间:

git config credential.helper 'cache --timeout={时间(秒)}'

不要忘记以秒为单位提供时间。让我们看看它是如何工作的。

  • 首先,我们需要激活该选项,使用命令 `git config credential.helper cache` 来缓存我们的凭据。
  • 使用你的用户名和密码访问私有仓库。
  • 输入用户名和密码后,系统会在指定时间内缓存你的 GitHub 凭据。

现在,更新、提交和推送。同样,系统不会要求你提供凭据,因为它已经缓存了这些凭据。

我们已经向你展示了如何使用 git 初始化仓库的命令。可以通过在上述命令中添加 `–global` 标志,全局更新所有项目的 git 配置。

个人访问令牌

个人访问令牌用于授予对 GitHub API 的访问权限。它类似于 OAuth 令牌,可以用于基本的身份验证,替代 git 的密码。因此,我们可以使用个人访问令牌来解决我们的问题。

让我们看看如何操作:

  • 登录你的 GitHub 帐户。
  • 进入设置。

  • 在左侧导航栏中,进入开发者设置。

  • 点击个人访问令牌,进入最终目的地。你会看到你的个人访问令牌。

  • 点击生成新令牌以生成一个新的令牌。

  • 输入令牌的注释。你可以将其视为简短的令牌注释,方便你记忆。

  • 选择令牌的权限。使用此令牌的程序将被授予所有选定权限的访问权。在我们的例子中,选择 repo。

  • 向下滚动到底部,然后单击生成令牌按钮。

  • 系统将只显示一次个人访问令牌,如下所示。你之后将无法再次看到它。因此,请复制它并安全地存储在某个地方,例如使用密码管理器。

  • 我们已经成功创建了个人访问令牌。
  • 现在,是时候使用它来访问我们的私有仓库了。
  • 类似于第一种方法,将 .git/config 文件中的仓库 URL 更新为 `https://{个人访问令牌}@github.com/用户名/仓库名称.git`

现在,尝试访问私有仓库。

系统会要求你进行身份验证吗?

不会,在令牌处于活动状态之前,系统不会要求你进行身份验证。现在,让我们看看最后一种解决问题的方法。

SSH

SSH 用于验证我们的身份。你可以在 GitHub 的文档中找到关于 SSH 的完整信息 这里.

其思路很简单:生成 SSH 密钥,将其添加到 GitHub 帐户,然后你就可以享受无密码身份验证了。

让我们详细看看这三个步骤。

  • 在你的系统中打开终端或命令提示符。
  • 输入命令 `ssh-keygen -t rsa` 以生成新的 SSH 密钥。
  • 系统会要求你提供用于保存密钥的目录。按回车键选择默认目录。当然,你也可以根据自己的喜好更改目录。这里,我们使用默认目录。

  • 现在,我们必须输入密码来保护我们的 SSH 密钥。但这是可选的。
    • 如果我们为 SSH 密钥选择密码,则每次启动系统时都必须先输入它。
    • 如果我们没有选择密码,那么就不需要先输入。

  • 再次输入密码以确认。

  • 最后,系统会为我们生成一个新的 SSH 密钥,如下所示。

我们已经在我们的系统中成功生成了一个新的 SSH 密钥。它将创建两个文件,如下所示(如果修改了路径,则文件名可能会有所不同)。

现在,是时候连接我们的 GitHub 帐户了。我们需要将扩展名为 .pub 的文件中的内容复制到我们的 GitHub 帐户以进行连接。在我的例子中,它是 `id_rsa.pub`。

  • 登录你的 GitHub 帐户。
  • 进入设置。

  • 点击 SSH 和 GPG 密钥,进入最终目的地。

  • 单击“新建 SSH 密钥”以添加我们新生成的 SSH 密钥。

  • 你将导航到以下屏幕。

  • 为 SSH 密钥添加适当的标题。每个系统的 SSH 密钥都不同。因此,根据它进行选择是个不错的选择。但这不是唯一的选择,你可以根据自己的喜好根据其他事物进行选择。
  • 选择标题后,将 .pub 文件中的内容复制并粘贴到第二个字段中。

  • 最后,点击“添加 SSH 密钥”,并使用你的 GitHub 密码确认访问。
  • 新添加的 SSH 密钥如下所示。

我们已将新生成的 SSH 密钥添加到 GitHub。现在,我们必须对 SSH 连接进行身份验证,以便之后享受无密码身份验证。为此,请在终端或命令提示符中输入以下命令:

ssh -T [email protected]

系统会要求你进行确认。确认即可,我们就完成了。

现在,克隆你的私有仓库。这次系统不会要求进行任何身份验证。

更新、提交和推送。搞定!系统不会再要求你进行身份验证。好好享受吧!

总结

呼!我们已经介绍了无需每次都输入凭据即可访问私有仓库的各种方法。你可以使用任何一种方法。但是,通常的最佳实践是使用 SSH 方法进行身份验证。

当然,这取决于你的喜好。没有规定说必须使用 SSH 方法。不过,大多数企业都使用 SSH 方法进行身份验证,因为它既安全又省时。同时,确保你的凭据安全。

祝你编码愉快!🙂