mac电脑git clone项目时报错证书过期和权限被拒绝

mac电脑使用git clone命令克隆项目时,一开始一直提示证书过期

SSL certificate problem: certificate has expired 

执行以下代码关掉验证后,解决了这个问题

  1. 找到git目录 Git\git-cmd
  2. 输入命令跳转到bin目录,cd bin
  3. 输入命令运行git.exe执行关掉 SSL验证
git config --global http.sslVerify false

之后就不提示这个错误了,但是克隆又一直提示权限被拒绝

remote: HTTP Basic: Access denied
Authentication failed for 'https://....'

将id_rsa等文件删除后也不管用,经同事测试,账号密码在window上可以克隆成功,那就证明肯定是mac电脑环境的问题啦!

既然我们已经删除了id_rsa文件,那按理应该说git的ssh权限就不存在了,但是有没有可能它被存储起来了呢?经查阅,发现还真就是这个缓存问题

Git 工具 - 凭证存储

凭证存储
如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据。 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要用户名和密码的。 这在使用双重认证的情况下会更麻烦,因为你需要输入一个随机生成并且毫无规律的 token 作为密码。
幸运的是,Git 拥有一个凭证系统来处理这个事情。 下面有一些 Git 的选项:

  • 默认所有都不缓存。 每一次连接都会询问你的用户名和密码。
  • “cache” 模式会将凭证存放在内存中一段时间
    密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。
  • “store” 模式会将凭证用明文的形式存放在磁盘中,并且永不过期
    这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息。 这种方式的缺点是你的密码是用明文的方式存放在你的home 目录下。
  • 如果你使用的是 Mac,Git 还有一种
    osxkeychain” 模式,它会将凭证缓存到你系统用户的钥匙串中
    这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的,这种加密方式与存放 HTTPS 凭证以及 Safari 的自动填写是相同的。
  • 如果你使用的是 Windows,你可以安装一个叫做 “winstore” 的辅助工具。 这和上面说的 “osxkeychain”
    十分类似,但是是使用 Windows Credential Store 来控制敏感信息。
    可以在https://gitcredentialstore.codeplex.com 下载。

所以,我们删掉这个凭证存储就可以解决这个问题啦!经测试,发现以下步骤可以成功解决:

1、首先使用git config --list查看配置,查看里面的credential.helper
credential.helper=osxkeychain 

mac电脑git clone项目时报错证书过期和权限被拒绝_第1张图片

如果是osxkeychain模式,那么它会将凭证缓存到你系统用户的钥匙串中

2、删除mac中的钥匙串

使用以下步骤删除对应的地址存放的钥匙串
如果由于某些原因(如忘记了密码)导致钥匙串不可访问,您可以删除它并创建一个新钥匙串。要删除钥匙串

  • 打开“钥匙串访问”,它位于“应用程序”文件夹的“实用工具”文件夹中。 如果钥匙串是隐藏的,请选取“显示”>“显示钥匙串”。
  • 在“钥匙串”列表中选择一个钥匙串。 选取“文件”>“删除钥匙串(钥匙串名称)”。
  • 如果您想要删除与此钥匙串相关联的文件,请点按“删除引用和文件”,否则请点按“删除引用”。


之后就可以正常克隆啦~
mac电脑git clone项目时报错证书过期和权限被拒绝_第2张图片

你可能感兴趣的:(macos,git,clone,git凭证存储,ssh)