AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
## 7.14 凭证储存 如果使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据。 然而,对于 HTTP 协议来说,每一个连接都是需要用户名和密码的。Git 提供了一个凭证系统来处理这个事情,它有一下选项: * 默认所有都不缓存。 每一次连接都会询问用户名和密码。 * `cache` :将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。 * `store`:模式会将凭证用明文的形式存放在磁盘中,并且永不过期,这意味着除非你修改了在 Git 服务器上的密码,否则永远不需要再次输入你的凭证信息。 * `osxkeychain` :对于 Mac,它会将凭证缓存到系统用户的钥匙串中。 这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的。 * `winstore` :对于Window,与 `osxkeychain` 十分类似,但是是使用 Windows Credential Store 来控制敏感信息。 设置 Git 的配置来选择上述的一种方式: ``` $ git config --global credential.helper cache ``` `store` 模式可以接受一个`--file <path>`参数,可以自定义存放密码的文件路径(默认是`~/.git-credentials` )。`cache` 模式有`--timeout <seconds>`参数,可以设置后台进程的存活时间(默认是 “900”,也就是 15 分钟)。 **底层实现** 凭证系统实际调用的程序和 Git 本身是分开的,具体是哪一个以及如何调用与`credential.helper`配置的值有关。 **自定义凭证缓存** 因为凭证系统实际调用的程序和 Git 本身是分开的,所以 Git 凭证辅助工具可以是任意程序。而自定义凭证缓存扩展只要是一个 Git 能够执行最终的程序即可,任何语言都是可以的。这个辅助工具需要放到`PATH`路径下并且给予执行权限。