您的位置:

Git记住用户名和密码 - 处理认证信息

一、什么是认证信息

在使用 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 认证的一般流程:

  1. 生成密钥对:使用 ssh-keygen 命令生成公钥和私钥,其中私钥需要保护好。
  2. 将公钥添加到远程仓库:将公钥内容添加到远程仓库的 SSH key 列表中。
  3. 在本地配置私钥路径:告诉 Git 使用哪个私钥来进行认证。

下面是具体的操作步骤:

  1. 生成密钥对:
  2. ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    这里我们指定了算法为 RSA,长度为 4096,以及你的邮箱地址。

  3. 将公钥添加到远程仓库:
  4. 这个操作需要进入到远程仓库的网站上进行,以 GitHub 为例,具体操作如下:

    1. 进入个人设置 -> 外观 -> SSH and GPG keys -> New SSH key。
    2. 将刚刚生成的公钥内容拷贝到 key 中,并添加 title。
    3. 最后点击 Add SSH key 保存即可。
  5. 在本地配置私钥路径:
  6. 这个操作需要在本地进行。

    首先找到自己的私钥路径,通常为 ~/.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 的操作步骤:

  1. 下载 Git Credential Manager:
  2. 可以从 Git 官网上下载最新的 Git Credential Manager。

  3. 使用 Git Credential Manager:
  4. 在使用 Git Credential Manager 之前,需要先通过以下命令来告诉 Git 使用 Git Credential Manager:

    git config --global credential.helper manager
    

    之后 Git 会在执行相关命令时自动调用 Git Credential Manager 来进行认证。