git clone时,报403错误,完美解决方案

解决Git 403错误
本文介绍了解决Git操作中出现的403错误的方法,包括如何清除错误的密码缓存以及正确设置凭据助手,确保后续操作的顺利进行。

首先命令行操作结果如下:

root@zhiren-PowerEdge-T110-II:/zrun# git clone https://git.coding.net/xxxxxxxx/xxxx.git
正克隆到 'anbu'...
remote: Coding.net Tips : [You have no permission to access this repo.]
fatal: unable to access 'https://git.coding.net/xxxxxxxx/xxxx.git/': The requested URL returned error: 403

 

起初完全不知道哪里出了问题。后来到处查阅,发现原因:git 客户端缓存了错误的密码

 

问题起源:

https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速

设置记住密码(默认15分钟):

git config --global credential.helper cache

如果想自己设置时间,可以这样做:

git config credential.helper 'cache --timeout=3600'

这样就设置一个小时之后失效

长期存储密码:

git config --global credential.helper store

增加远程地址的时候带上密码也是可以的。(推荐)

http://yourname:password@git.oschina.net/name/project.git

真是后悔,图一时痛快,忽略了宝贵的“推荐”二字。
git config --global credential.helper store该命令可以将用户名和密码长期全局地长期地存储在客户端(实际是客户端所在电脑,并非git的任何目录下,也就是说,即使重装git,改密码也存在。),注意是全局地。
原作者不推荐的原因正是这个。因为,这里保存的账号和密码会自动应用到每一个git clone指令,如果想要克隆的不是该账号下的项目,就只会得到403错误。

下路给出正解:
方法一:

增加远程地址的时候带上密码也是可以的。(推荐)

http://yourname:password@git.oschina.net/name/project.git
这种方式会把改账号和密码也添加到~/.git-credentials。
方法二:
运行命令:rm ~/.git-credentials,删掉git config --global credential.helper store保存的账号和密码。回到每次输入用户名和密码。
~/.git-credentials


from: http://www.cnblogs.com/jarvisjin/p/5915419.html
<think>我们使用`git config`命令修改了Git的全局配置,将`http.sslverify`和`https.sslverify`设置为`false`。这意味着我们禁用了Git在通过HTTP或HTTPS协议访问远程仓库的SSL证书验证。 ### 解释: 1. **SSL证书验证的作用**: - 在正常情况下,Git会验证远程服务器(如GitHub)的SSL证书,以确保你连接的是正确的服务器,而不是中间人攻击的伪造服务器。 - 这种验证是保证数据传输安全的重要措施。 2. **禁用验证的风险**: - 禁用后,Git将不再检查远程服务器的证书是否有效、是否由受信任的机构颁发、是否与目标主机匹配。 - 这会降低安全性,因为可能面临中间人攻击的风险,导致代码被篡改或窃取。 3. **适用场景**: - 内部网络或测试环境,其中证书问题常见且安全风险较低。 - 临解决因证书问题(如自签名证书、证书过期、根证书缺失)导致的连接失败。 4. **临性**: - 该方案通过`--global`设置为全局配置(影响所有仓库),若只想临针对某个仓库禁用,可去掉`--global`并在仓库目录内执行。 ### 代码说明: ```bash # 禁用HTTP SSL验证 git config --global http.sslverify false # 禁用HTTPS SSL验证 git config --global https.sslverify false ``` ### 恢复安全设置: ```bash # 恢复全局HTTP SSL验证 git config --global http.sslverify true # 恢复全局HTTPS SSL验证 git config --global https.sslverify true ``` ### 替代方案(推荐): 如果问题是由自签名证书引起,可添加服务器的证书到信任列表: ```bash # 获取服务器证书(以github.com为例) openssl s_client -connect github.com:443 < /dev/null 2>&1 | sed -n '/-----BEGIN/,/-----END/p' > github.pem # 将证书添加到Git的信任列表 git config --global http.sslCAInfo /path/to/github.pem ``` --- ### 总结: 该方法通过**禁用SSL证书验证**解决了下载问题,但牺牲了安全性。仅建议在安全环境或临使用,长期应修复证书问题。 §§相关问题§§: 1. Git如何管理SSL证书验证? 2. 如何为特定Git仓库禁用SSL验证而不影响全局设置? 3. 除了禁用验证,还有哪些方法可以解决SSL证书错误? 4. 如何检查当前Git配置中SSL验证的状态?</think>你使用的解决方案是通过以下命令**禁用 Git 的 SSL 证书验证**: ```bash git config --global http.sslverify false git config --global https.sslverify false ``` ### 方法详解: 1. **问题本质**: - Git 在访问 HTTPS 仓库默认会验证 SSL/TLS 证书的有效性 - 证书验证失败会导致 `Checkout failed` 错误 - 常见原因: - 系统根证书不完整/过期 - 企业防火墙/代理的中间人证书 - 网络环境限制(如校园网/公司内网) - GitHub 证书链更新未同步 2. **解决方案原理**: - `git config`:修改 Git 的配置设置 - `--global`:应用于当前用户的所有仓库(全局配置) - `http.sslverify false`:禁用 HTTP 协议的 SSL 证书验证 - `https.sslverify false`:禁用 HTTPS 协议的 SSL 证书验证 - 效果:Git 会忽略所有 SSL 证书错误,直接建立连接 3. **安全影响**: - ✅ **优点**:解决了因证书问题导致的连接失败 - ⚠️ **风险**: - 降低了安全性(无法防止中间人攻击) - 数据在传输过程中可能被窃听或篡改 - 仅推荐在可信网络环境中临使用 4. **替代安全方案**: ```bash # 添加特定证书到信任列表(更安全) git config --global http.sslCAInfo /path/to/custom/cert.pem # 仅针对特定仓库禁用验证(范围最小化) git config http.sslverify false ``` ### 配置验证: ```bash # 检查当前配置 git config --global --get http.sslverify git config --global --get https.sslverify # 输出应为 "false" 表示已禁用 ``` ### 恢复安全设置: ```bash # 重新启用 SSL 验证 git config --global http.sslverify true git config --global https.sslverify true ``` ### 典型使用场景: ```bash # 临解决证书问题的工作流程 git config --global http.sslverify false # 禁用验证 git clone https://github.com/... # 执行克隆/拉取操作 git config --global http.sslverify true # 立即恢复验证 ``` > **最佳实践建议**:在完成仓库下载后,**务必立即重新启用 SSL 验证**以保持系统安全。长期解决方案应修复系统证书库(更新 CA 证书包)或配置正确的代理证书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值