Git一般会使用HTTPS和SSH这两种协议来进行本地库和远程库之间的操作。

HTTPS协议

这种默认每次创建新连接都会要求输入远程库的账户密码,如果不想要每次都输入,可以通过Git凭证存储配置避免每次都输入

通过修改全局配置文件进行设置,操作命令:git config --global credential.helper [options]

options说明备注
默认所有都不缓存。 每一次连接都会询问你的用户名和密码
cache此模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除
store此模式会将凭证用明文的形式存放在磁盘中,并且永不过期。 这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息。 这种方式的缺点是你的密码是用明文的方式存放在你的 home 目录下
osxkeychain此模式会将凭证缓存到你系统用户的钥匙串中。 这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的,这种加密方式与存放 HTTPS 凭证以及 Safari 的自动填写是相同的仅Mac系统可用
manager此模式会将凭证记录到系统的凭证管理中,可以通过控制面板 → 用户账户 → 凭据管理 → windows凭据进行查看编辑删除仅Windows系统可用

一般是修改全局配置文件进行设置, 除了修改用户全局配置文件外,也可以通过修改其他配置文件实现

配置文件级别优先级文件路径
本地最高代码当前目录下的.git/config
全局次于本地通过命令git config --global --list --show-origin查看
系统最低通过命令git config --system --list --show-origin查看

注意:Github自2021年8月13日开始,不再使用密码进行登录,而是改用私人令牌
https://github.blog/changelog/2021-08-12-git-password-authentication-is-shutting-down/

当用HTTPS操作Github的远程库时,如果要输入密码,输入的不是Github账户的密码,而是在Github上配置的私人令牌

Github配置私人令牌:点击Github右上角个人头像 → settings → Developer settings → Tokens(classic)

SSH模式

这种需要先在本地生成SSH公钥和私钥,并将公钥配置到远程库中,配置好后,如果设置了一个没有口令的密钥,就可以在不输入用户名和密码的情况下安全地传输数据。

Git使用RSA算法生成密钥命令:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下

Github推荐用ed25519算法生成密钥命令:ssh-keygen -t ed25519 -C "your_email@example.com"

https://docs.github.com/zh/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

注意:GitHub 通过在 2022 年 3 月 15 日删除旧的、不安全的密钥类型来提高安全性。

自该日期起,不再支持 DSA 密钥 (ssh-dss)。 无法在 GitHub.com上向个人帐户添加新的 DSA 密钥。

2021 年 11 月 2 日之前带有 valid_after 的 RSA 密钥 (ssh-rsa) 可以继续使用任何签名算法。 在该日期之后生成的 RSA 密钥必须使用 SHA-2 签名算法。 一些较旧的客户端可能需要升级才能使用 SHA-2 签名。