Git的HTTPS和SSH
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"
注意:GitHub 通过在 2022 年 3 月 15 日删除旧的、不安全的密钥类型来提高安全性。
自该日期起,不再支持 DSA 密钥 (ssh-dss)。 无法在 GitHub.com上向个人帐户添加新的 DSA 密钥。
2021 年 11 月 2 日之前带有 valid_after 的 RSA 密钥 (ssh-rsa) 可以继续使用任何签名算法。 在该日期之后生成的 RSA 密钥必须使用 SHA-2 签名算法。 一些较旧的客户端可能需要升级才能使用 SHA-2 签名。