如何设置无密码身份验证以访问GitHub私有仓库?

相同任务的重复对像我们这样的程序员来说是无聊和痛苦的,不是吗?

其中之一是与GitHub的私人存储库进行交互。这是什么意思?您知道它是什么。而且您正在寻找解决方法,并在本文中停了下来。阅读本文后,您将停止搜索。

因此,我们将讨论在没有密码的情况下访问GitHub私人存储库的方法。废话不多说,让我们开始吧。

有两种访问任何GitHub存储库的方法。它们是HTTPSSSH。你们大多数人都在使用HTTPS。但是,现在您已经知道使用HTTPS方法克隆私有存储库不是一种有效的方式。

访问包括克隆,推送,拉取等等。与更新远程存储库相关的任何事情。

访问公共存储库时没有问题。但是,我们需要在进行链接时进行身份验证。有不同的身份验证方式。

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

如果使用HTTPS

您可能已经了解了HTTPS方法并正在寻找其他方法。让我们快速看看如何使用它访问私有存储库。

  • 复制您的私有存储库链接。
GitHub私人存储库
  • 在您的机器上打开终端或cmd。
  • 粘贴git clone link命令以克隆私有存储库。
  • link替换为您的私有存储库链接。
  • 它会要求我们进行身份验证。因此,我们必须输入我们的GitHub凭据。
  • 首先,它会要求我们输入我们的GitHub用户名。输入您的GitHub用户名并按Enter
身份验证用户名
  • 现在,我们需要输入密码。输入您的GitHub密码并按Enter
身份验证密码

就这样,我们使用HTTPS方法克隆了私有存储库。现在,在存储库中更新一些内容,提交并推送到远程。

你注意到了什么?

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

推送身份验证
推送身份验证

每次与私人存储库进行交互时都要输入凭据,这不是一项乏味且繁重的任务吗?

是的,确实。

我们无法在与私人存储库进行交互时输入我们的GitHub凭据。这是一个耗时的过程,会减慢我们的工作速度。

有不同的方法可以解决上述问题。解决办法是使用SSH。但是,还有其他方法可以解决。让我们逐个查看所有这些方法。

.git config

我们存储库版本的所有信息都存储在.git目录中。这是一个隐藏的文件夹。其中有一个config文件,允许我们配置设置。但是,通常不建议这样做。

我们可以通过在存储库URL中添加用户名密码来克隆私有存储库,如下所示。

git clone https://username:password@github.com/username/repository_name.git

使用适当的详细信息更新用户名密码存储库名称。由于我们在URL中提供了凭据,所以它不会像之前那样要求进行身份验证。

因此,我们将按照上述身份验证方法更新我们的存储库配置。让我们看看通过更新URL来消除重复身份验证的步骤。

  • 打开克隆存储库中的.git文件夹。
.git文件夹
  • 您会发现一个名为config的文件。使用您选择的任何文本编辑器打开它。
  • 会有一行包含我们的存储库链接的内容。
config中的存储库链接
  • 通过添加您的用户名密码来更新URL,如上所示。
存储库URL更新

现在,再次更新存储库中的内容,提交并推送它们。

你注意到什么了吗?

这次它不应该要求您的GitHub凭据。因此,我们通过更新存储库设置解决了我们的问题。

您可能已经注意到这并不安全。因为我们暴露了我们的凭据。而且如果您的GitHub密码中包含@ 字符,这种方法将无法工作。

因此,使用此方法存在一些严重的缺点。因此,让我们忽略它,继续下一种方法。

credential.helper

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

当我们第一次输入凭据时,它将它们存储起来。再次尝试访问私有存储库时,它将不会要求凭据,直到它存储在~/git-credentials文件中。因此,这是避免我们问题的一种方法。让我们通过精确的步骤来看看它的运作方式。

  • 首先,我们需要使用命令git config credential.helper store激活存储凭据的选项。
  • 在激活选项后,使用您的用户名和密码尝试访问私有存储库。
  • 一旦您输入用户名和密码,它将按以下方式将其存储在~/.git-credentials文件中。
git-credentials

现在,再次检查它是否正常工作的相同过程。更新、提交和推送。我相信如果您按照上述存储凭据的步骤进行操作,它不会要求您输入凭据。

进行得不错…

如果您想将凭据保存4小时而不是永久保存,该怎么办?

credential.helper提供了一种临时存储凭据的方法,以一定的时间保存它们。我们使用cache而不是store来在一定的时间内存储凭据。

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

git config credential.helper 'cache --timeout={time_in_seconds}'

不要忘记以秒为单位给出时间。让我们看它的实际效果。

  • 首先,我们需要使用命令git config credential.helper cache来激活缓存凭据的选项。
  • 使用用户名和密码访问私有存储库。
  • 一旦输入用户名和密码,它将缓存您的GitHub凭据一段时间。

现在,进行更新、提交和推送。因为我们已经告诉它将它们缓存起来,所以它不会再要求您的凭据。

我们已经向您展示了在git初始化的存储库中工作的命令。我们可以通过在上述命令中添加--global标志来全局更新git配置,适用于所有项目。

个人访问令牌

个人访问令牌用于提供对GitHub API的访问权限。个人访问令牌类似于OAuth令牌。因此,它们可以用于基本认证,而不是使用密码进行git操作。因此,我们可以使用个人访问令牌来解决问题。

让我们看看如何操作。

  • 登录您的GitHub帐户。
  • 转到设置
GitHub设置
  • 现在,从左侧导航栏转到开发者设置
GitHub开发者设置
GitHub开发者设置
  • 点击个人访问令牌以达到我们的最终目的地。您将看到个人访问令牌如下所示。
GitHub个人访问令牌
  • 点击生成新token以生成一个新的令牌。
生成新令牌
  • 为令牌输入备注。您可以将其视为令牌的简短备注,以便记忆。
个人访问令牌备注
  • 选择令牌的权限。使用令牌的程序将授予所选权限的访问权限。在我们的情况下,选择repo
存储库权限
  • 向下滚动到底部,点击生成令牌按钮。
生成令牌按钮
  • 它将仅显示个人访问令牌一次,如下所示。我们无法再次查看我们的个人令牌。因此,请将其复制并安全保存在某个地方。如果需要,请使用password manager
个人访问令牌
  • 我们已成功创建了个人访问令牌
  • 现在,是时候使用它来访问我们的私有存储库了。
  • .git/config文件中更新存储库URL,形式为https://{personal_access_token}@github.com/hafeezulkareem/private_repository.git
在配置中的个人访问令牌

现在,尝试访问私有存储库。

它是否要求您进行身份验证?

不,它不会要求您进行身份验证,直到令牌失效。让我们转到最后一种解决问题的方式。

SSH

SSH用于身份验证。你可以在GitHub上找到关于SSH的完整文档here

思路很简单。生成一个SSH密钥,将其添加到GitHub账户中,然后享受passwordless authentication

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

  • 在你的系统上打开终端或cmd。
  • 输入命令ssh-keygen -t rsa生成一个新的SSH密钥。
  • 它会询问要保存密钥的目录。按Enter选择默认目录。但是,你也可以根据自己的偏好更改目录。在这里,我们使用默认目录。
SSH目录
  • 现在,我们需要输入密码短语来保护我们的SSH密钥。但这是可选的。
    • 如果我们为SSH密钥选择了密码短语,那么每次打开系统时都需要首先输入它。
    • 如果我们没有选择密码短语,那么就不需要首先输入它。
    SSH密码短语
    • 再次输入密码短语以确认。
    SSH密码短语
    • 最后,它将为我们生成一个新的SSH密钥。
    SSH密钥

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

    SSH密钥文件

    现在,是时候连接到我们的GitHub账户了。需要将带有扩展名.pub文件内容复制到我们的GitHub账户以建立连接。在我的情况下,它是id_rsa.pub

    • 登录到你的GitHub账户。
    • 打开设置
    GitHub设置
    • 点击SSH和GPG密钥以到达我们的最终目的地。
    SSH和GPG密钥
    SSH和GPG密钥
    • 点击新的SSH密钥以添加我们新生成的SSH密钥。
    新的SSH密钥
    • 你将跳转到以下屏幕。
    新的SSH密钥
    • 为SSH密钥添加适当的标题。每个系统的SSH密钥都不同。所以,根据它是一个不错的选择。但这不是唯一的选择。你可以根据其他事情的偏好进行选择。
    • 选择标题后,将.pub的内容复制并粘贴到第二个字段中。
    新的SSH密钥
    • 最后,点击添加SSH密钥并使用你的GitHub密码确认访问。
    • 新添加的SSH密钥将如下所示。
    新的SSH密钥

    我们已将新生成的SSH密钥添加到GitHub。现在,我们需要验证SSH连接以享受后续的无密码验证。要执行此操作,请在终端或cmd中输入以下命令。

    ssh -T [email protected]
    SSH连接

    它会要求确认。确认后我们就完成了。

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

    更新、提交和推送。就是这样。它不会再要求你进行身份验证。享受它吧。

    结论

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

    再次强调,这取决于您的个人喜好;没有严格的规定只能使用SSH方法。但是,大多数企业使用SSH方法进行身份验证,这是安全且节省时间的。并确保你的链接是安全的。

    开心开发 🙂

类似文章