介绍
在 ubuntu
上使用 git clone
下载时,每次都需要输入密码,而且,现在 github
要求使用 personal access token
,无法直接输入密码了。
解决办法
|
|
使用 store
模式存储凭证,凭证用明文的形式存放在磁盘中,并且永不过期,存储位置: ~/.git-credentials
中。
参考:
https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%87%AD%E8%AF%81%E5%AD%98%E5%82%A8
凭证存储
如果你使用的是 SSH
方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据。 然而,这对 HTTP
协议来说是不可能的 — 每一个连接都是需要用户名和密码的。 这在使用双重认证的情况下会更麻烦,因为你需要输入一个随机生成并且毫无规律的 token
作为密码。
幸运的是,Git
拥有一个凭证系统来处理这个事情。 下面有一些 Git
的选项:
-
默认所有都不缓存。 每一次连接都会询问你的用户名和密码。
-
“
cache
” 模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。 -
“
store
” 模式会将凭证用明文的形式存放在磁盘中,并且永不过期。 这意味着除非你修改了你在Git
服务器上的密码,否则你永远不需要再次输入你的凭证信息。 这种方式的缺点是你的密码是用明文的方式存放在你的home
目录下。 -
如果你使用的是
Mac
,Git
还有一种 “osxkeychain
” 模式,它会将凭证缓存到你系统用户的钥匙串中。 这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的,这种加密方式与存放HTTPS
凭证以及Safari
的自动填写是相同的。 -
如果你使用的是
Windows
,你可以安装一个叫做 “Git Credential Manager for Windows
” 的辅助工具。 这和上面说的 “osxkeychain
” 十分类似,但是是使用Windows Credential Store
来控制敏感信息。 可以在 https://github.com/Microsoft/Git-Credential-Manager-for-Windows 下载。
你可以设置 Git 的配置来选择上述的一种方式
|
|
部分辅助工具有一些选项。 “store
” 模式可以接受一个 --file <path>
参数,可以自定义存放密码的文件路径(默认是 ~/.git-credentials
)。 “cache
” 模式有 --timeout <seconds>
参数,可以设置后台进程的存活时间(默认是 “900
”,也就是 15
分钟)。 下面是一个配置 “store
” 模式自定义路径的例子:
|
|
Git
甚至允许你配置多个辅助工具。 当查找特定服务器的凭证时,Git
会按顺序查询,并且在找到第一个回答时停止查询。 当保存凭证时,Git
会将用户名和密码发送给 所有 配置列表中的辅助工具,它们会按自己的方式处理用户名和密码。 如果你在闪存上有一个凭证文件,但又希望在该闪存被拔出的情况下使用内存缓存来保存用户名密码,.gitconfig
配置文件如下:
|
|