如何设置无密码身份验证以访问GitHub私有仓库?
相同任务的重复对像我们这样的程序员来说是无聊和痛苦的,不是吗?
其中之一是与GitHub的私人存储库进行交互。这是什么意思?您知道它是什么。而且您正在寻找解决方法,并在本文中停了下来。阅读本文后,您将停止搜索。
因此,我们将讨论在没有密码的情况下访问GitHub私人存储库的方法。废话不多说,让我们开始吧。
有两种访问任何GitHub存储库的方法。它们是HTTPS和SSH。你们大多数人都在使用HTTPS。但是,现在您已经知道使用HTTPS方法克隆私有存储库不是一种有效的方式。
访问包括克隆,推送,拉取等等。与更新远程存储库相关的任何事情。
访问公共存储库时没有问题。但是,我们需要在进行链接时进行身份验证。有不同的身份验证方式。
让我们从最熟悉的方式开始……
如果使用HTTPS
您可能已经了解了HTTPS方法并正在寻找其他方法。让我们快速看看如何使用它访问私有存储库。
- 复制您的私有存储库链接。
- 在您的机器上打开终端或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
文件夹。
- 您会发现一个名为config的文件。使用您选择的任何文本编辑器打开它。
- 会有一行包含我们的存储库链接的内容。
- 通过添加您的用户名和密码来更新URL,如上所示。
现在,再次更新存储库中的内容,提交并推送它们。
你注意到什么了吗?
这次它不应该要求您的GitHub凭据。因此,我们通过更新存储库设置解决了我们的问题。
您可能已经注意到这并不安全。因为我们暴露了我们的凭据。而且如果您的GitHub密码中包含@
字符,这种方法将无法工作。
因此,使用此方法存在一些严重的缺点。因此,让我们忽略它,继续下一种方法。
credential.helper
credential.helper
允许我们将凭据永久存储在~/.git-credentials
文件中。
当我们第一次输入凭据时,它将它们存储起来。再次尝试访问私有存储库时,它将不会要求凭据,直到它存储在~/git-credentials
文件中。因此,这是避免我们问题的一种方法。让我们通过精确的步骤来看看它的运作方式。
- 首先,我们需要使用命令
git config credential.helper store
激活存储凭据的选项。 - 在激活选项后,使用您的用户名和密码尝试访问私有存储库。
- 一旦您输入用户名和密码,它将按以下方式将其存储在
~/.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帐户。
- 转到设置。
- 现在,从左侧导航栏转到开发者设置。
- 点击个人访问令牌以达到我们的最终目的地。您将看到个人访问令牌如下所示。
- 点击生成新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密钥。它将创建两个文件,如下所示(如果你更改了路径,则文件名可能会有所不同)。
现在,是时候连接到我们的GitHub账户了。需要将带有扩展名
.pub
的文件内容复制到我们的GitHub账户以建立连接。在我的情况下,它是id_rsa.pub
。- 登录到你的GitHub账户。
- 打开设置。
- 点击SSH和GPG密钥以到达我们的最终目的地。
- 点击新的SSH密钥以添加我们新生成的SSH密钥。
- 你将跳转到以下屏幕。
- 为SSH密钥添加适当的标题。每个系统的SSH密钥都不同。所以,根据它是一个不错的选择。但这不是唯一的选择。你可以根据其他事情的偏好进行选择。
- 选择标题后,将.pub的内容复制并粘贴到第二个字段中。
- 最后,点击添加SSH密钥并使用你的GitHub密码确认访问。
- 新添加的SSH密钥将如下所示。
我们已将新生成的SSH密钥添加到GitHub。现在,我们需要验证SSH连接以享受后续的无密码验证。要执行此操作,请在终端或cmd中输入以下命令。
ssh -T [email protected]
它会要求确认。确认后我们就完成了。
现在,克隆你的私有仓库。这次不会要求任何身份验证。
更新、提交和推送。就是这样。它不会再要求你进行身份验证。享受它吧。
结论
哇!我们已经介绍了各种不需要每次输入凭据来访问私有仓库的方法。你可以使用任何方法。但是,一般和最佳实践是使用SSH方法进行身份验证。
再次强调,这取决于您的个人喜好;没有严格的规定只能使用SSH方法。但是,大多数企业使用SSH方法进行身份验证,这是安全且节省时间的。并确保你的链接是安全的。
开心开发 🙂