📌  相关文章
📜  如何不必在每次推送 git 时都输入凭证 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:51:43.756000             🧑  作者: Mango

如何不必在每次推送 git 时都输入凭证 - Shell/Bash

在使用 git 进行代码管理时,我们通常需要输入用户名和密码凭证以进行推送操作。这虽然可以保证代码安全性,但在频繁推送操作时,也会给程序员带来麻烦。因此,本文主要介绍如何通过 Shell/Bash 命令行,实现免密推送 git 代码的方法。

1. Git SSH 方式认证

Git 可以通过 SSH 方式进行认证操作,相比于用户名和密码方式,更加安全且不需要输入凭证。以下步骤介绍如何使用 SSH 方式进行 git 认证。

步骤一:生成 SSH 密钥

打开 Terminal (MacOS 或者 Linux 用户)或 git bash (Windows 用户),输入以下命令生成 SSH 私钥和公钥。

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

其中, -t 参数后跟加密算法类型,我们使用的是 RSA 加密。 -b 参数后跟密钥长度,此处指定为 4096。 -C 参数后跟注释信息,此处填写你的邮箱信息。

步骤二:添加公钥到 git 服务器

执行以下命令将刚生成的公钥添加到 git 服务器中。

cat ~/.ssh/id_rsa.pub

此命令会打印出 SSH 公钥,将公钥复制到 git 服务器上,如 GitHub 或 GitLab 上的 SSH Keys 中。

步骤三:配置 git 使用 SSH 认证

执行以下命令配置 git 使用 SSH 方式进行认证。

git config --global user.email "your_email@example.com"
git config --global user.name "your name"
git remote set-url origin git@github.com:username/repo.git

以上命令中,首先设置了全局的用户名和邮箱,接着通过 set-url 命令修改了 git 的远程仓库地址。注意将 git@github.com:username/repo.git 中的 usernamerepo 修改为你的 GitHub 账户名和对应仓库名。

此时,再次进行 push 操作时,系统不再要求输入用户名和密码,而是直接使用 SSH 私钥进行认证。

2. Git Credential Cache

Git 也可以通过 Credential Cache 让用户在一定时间内仅需要输入一次凭证信息。以下步骤介绍如何使用 Credential Cache 免密推送 git 代码。

步骤一:启用 Credential Cache

执行以下命令启用 Credential Cache。

git config --global credential.helper cache

此命令将 Credential Cache 启用,并将缓存凭证的时间设置为 15 分钟。你也可以通过执行以下命令来自定义时间。

git config --global credential.helper 'cache --timeout=3600'

以上命令将凭证缓存时间设置为 3600 秒(1 小时)。

步骤二:推送代码

在执行 git push 操作时,第一次输入用户名和密码,系统会将凭证缓存至本地电脑,以后再次推送代码时无需再输入凭证信息即可完成操作。

结语

以上就是两种实现免密推送 git 代码的方法。通过 SSH 方式进行认证,可大大提升代码的安全性,遗憾的是,在某些情况下,你的 SSH 公钥可能会被甩出去,从而增加风险。而 Credential Cache 方式通过缓存凭证信息,可保证在一定时间内无需重复输入凭证,既安全又便捷。在实际使用中,可根据不同的场景选择合适的方式。