一时手痒, 禁用了SSL验证, 导致git pull时弹出git config --global http.sslVerify
前言
我准备拷贝一份公司SVN仓库的代码, 试过git clone
但下载失败, 也没有弹出输入用户名密码之类, 于是乎, 我一时手痒, 使用如下命令全局禁用了SSL(该操作需慎重)
git config --global http.sslVerify false
禁用 SSL 验证会降低连接的安全性,因此不推荐在生产环境中使用
禁用的后果是, 我使用git pull
拉取之前仓库A
代码时, 电脑弹出git config --global http.sslVerify
提示框.
无奈之下, 输入密码, 却发现并非登陆密码.
如何解决该问题呢?
正文
有4种办法解决http.sslVerify
弹窗
办法一: 使用 Git 配置存储密码
可以配置Git, 使用缓存或文件来存储密码,从而避免弹出弹窗
使用缓存存储密码
git config --global credential.helper cache
默认情况下,缓存会在 15 分钟后失效,你可以通过设置 cache
参数来改变这个时间,比如缓存 1 小时(3600 秒):
git config --global credential.helper "cache --timeout=3600"
但是我不知道密码呀, 这种方法只能放弃
办法二: 使用环境变量
可以通过设置环境变量来提供 Git 凭据,从而避免弹出弹窗
export GIT_ASKPASS=/bin/echo
办法三: 禁用 osxkeychain
凭据助手
你可以禁用 git-credential-osxkeychain
,改为使用其他凭据助手或不使用任何凭据助手
git config --global --unset credential.helper
如果你想改用其他凭据助手,比如 cache
或 store
,使用如下配置:
git config --global credential.helper cache
# 或者
git config --global credential.helper store
但是这个涉及到全局操作, 使用之后会不会引发新的问题?
我并未尝试该解决方案.
办法四: 使用 SSH 代替 HTTPS(推荐)
生成本地SSH密钥
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
生成完之后, 导航到ssh目录
cd ~/.ssh
在该目录内, 查看公钥内容
cat ~/.ssh/id_rsa.pub
输出的公钥内容类似如下代码
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAv6C8... your_email@example.com
打开仓库A
的网页代码地址, 在如下图位置贴上你的公钥内容
Title
会自动填充, 点击Add Key
即可
更换仓库A
的远程git地址
进入仓库A
目录内, 执行如下命令
git remote -v
输入类似
origin https://github.com/username/repository.git (fetch)
origin https://github.com/username/repository.git (push)
将远程git仓库的URL地址更换为SSH
git remote set-url origin git@github.com:username/repository.git
再次运行git remote -v
, 确认输出如下类似的信息
origin git@github.com:username/repository.git (fetch)
origin git@github.com:username/repository.git (push)
至此, 仓库A
可使用git pull git push
等命令, 再也没有弹出错误提示框.
尾声
如何拉取SVN仓库代码
电脑mac, 需使用如下命令安装SVN
brew install svn
安装完成之后, 使用命令svn checkout SVN仓库代码地址
, 即可拉取SVN仓库代码
所以各位小伙伴们一定要慎重使用该命令git config --global http.sslVerify false
, 若像我一时手痒, 估计要么采用全局配置, 要么挨个挨个仓库建立ssh连接.
转载自:https://juejin.cn/post/7397331539850739752