一、什么是认证信息
在使用 Git 进行代码版本管理时,我们可能会从远程仓库 clone 或拉取代码,或者将代码 push 到远程仓库去。而这些操作都需要进行身份验证,否则就无法进行相应的操作。
Git 使用 HTTPS 或 SSH 来与远程仓库进行通信,其中 HTTPS 方式认证信息存储在本地的 Git 配置中,在每次向远程仓库推送代码时会需要输入用户名和密码;SSH 方式通过公钥、私钥的方式来进行认证,但是如果你使用的是有密码保护的私钥,那么每次还是需要输入密码来进行认证。
二、在 Git 中记住用户名和密码
如果每次推送代码都需要输入用户名和密码的话,那将会很麻烦。Git 提供了一个缓存机制,可以将认证信息缓存到本地,避免在每次 push 时都需要输入用户名和密码。
可以通过以下命令来开启缓存机制:
git config --global credential.helper cache
这命令会让 Git 在一段时间内(默认 15 分钟)缓存你的 Git 凭据,也就是你的用户名和密码。之后你就不用再次输入密码了。
如果想要更改默认缓存时间,可以使用以下命令:
git config --global credential.helper 'cache --timeout=3600'
这里将缓存时间设为 3600 秒,也就是 1 个小时。
三、在 Git 中使用 SSH 来认证
SSH 方式认证是使用公钥、私钥的方式,相比 HTTPS 方式认证更加安全和方便。
以下是 SSH 认证的一般流程:
- 生成密钥对:使用 ssh-keygen 命令生成公钥和私钥,其中私钥需要保护好。
- 将公钥添加到远程仓库:将公钥内容添加到远程仓库的 SSH key 列表中。
- 在本地配置私钥路径:告诉 Git 使用哪个私钥来进行认证。
下面是具体的操作步骤:
- 生成密钥对:
- 将公钥添加到远程仓库:
- 进入个人设置 -> 外观 -> SSH and GPG keys -> New SSH key。
- 将刚刚生成的公钥内容拷贝到 key 中,并添加 title。
- 最后点击 Add SSH key 保存即可。
- 在本地配置私钥路径:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
这里我们指定了算法为 RSA,长度为 4096,以及你的邮箱地址。
这个操作需要进入到远程仓库的网站上进行,以 GitHub 为例,具体操作如下:
这个操作需要在本地进行。
首先找到自己的私钥路径,通常为 ~/.ssh/id_rsa 或 ~/.ssh/id_dsa 等文件,然后添加以下内容到 ~/.ssh/config 中:
Host github.com
IdentityFile ~/.ssh/id_rsa # 这个换成你对应的私钥路径
这里我们以 GitHub 为例,如果是其他的 Git 仓库,将 Host 改为对应的地址即可。
四、使用 Git Credential Manager 来管理认证信息
Git Credential Manager 是一个工具,可以帮助用户管理认证信息,它支持 Windows, macOS 和 Linux 系统。
以下是 Git Credential Manager 的操作步骤:
- 下载 Git Credential Manager:
- 使用 Git Credential Manager:
可以从 Git 官网上下载最新的 Git Credential Manager。
在使用 Git Credential Manager 之前,需要先通过以下命令来告诉 Git 使用 Git Credential Manager:
git config --global credential.helper manager
之后 Git 会在执行相关命令时自动调用 Git Credential Manager 来进行认证。