Git clone/pull/push需要输入密码解决方法(全网最靠谱版本)

概述

工作以来反复遇到的一个问题,即git clone需要输入密码,每次都是现学(查)现用,临时查百度搜Google,网上文章参差不齐,着实浪费不少时间。再者,今天才知道存在两种不同情况,不能瞎百度:
在这里插入图片描述

HTTP/HTTPS

Linux

在Linux环境下使用http/https协议clone/pull GitLab仓库的代码遇到这个问题。以下解决方案也适合GitHub或其他仓库如码云,coding

解决方案:

  1. 在home目录下创建.git-credentials文件vim .git-credentials,输入形如https://{username}:{password}@github.com的配置文本:http://root:1qazroot@192.168.20.149/8090
    若有多个,一行一个,:wq保存退出
  2. 执行命令:git config --global credential.helper store
  3. 执行命令:cat ~/.gitconfig,存在如下内容即代表成功:
    [credential]
    helper = store
    

注:使用HTTP/HTTPS协议clone代码时,不需要配置SSH key。

注:所谓的使用HTTP/HTTPS协议,打开.git/config文件,url协议是http/(s):

[remote "origin"]
	url = http://git.aaa.com/aaa/aaa.git
	fetch = +refs/heads/*:refs/remotes/origin/*

Windows

在Windows环境下使用http/https协议clone/pull GitLab仓库的代码遇到这个问题:

remote: HTTP Basic: Access denied

很多公司为了安全,每3个月会强制用户更改域账户密码。此时执行git pull origin或者git clone会报错:

remote: HTTP Basic: Access denied
fatal: Authentication failed for 'http://git.aaa.com/aaa/aaa.git/'

解决方法,密码重置:git config --system --unset credential.helper,记得使用管理员权限执行,否则报错:error: could not lock config file C:/Program Files/Git/mingw64/etc/gitconfig: Permission denied

如果上面的命令行方法还不行,即在重置密码后,依旧让输入用户名密码时,可以尝试下面的解决方案。
在这里插入图片描述
手动更新Windows凭据。

如果没有凭据,则手动添加Windows凭据:
在这里插入图片描述
注意域名填写格式:git.teslacorp.com

哈哈,Tesla的内部Git仓库是这个么,我随便写的。好想进资本主义外企。

另外,看到存在该文件C:\Users\<user>\.git-credentials
在这里插入图片描述
居然有上千行重复的记录,而且记录着历史账户信息。

SSH/Git

具体来说,是在Linus环境下使用SSH/Git协议clone GitLab代码遇到这个问题。

既然是使用SSH方式克隆代码,毫无疑问需要配置SSH key。

执行命令:ssh-keygen -t rsa -C "shit",引号内的文本随便写,不要输入任何内容直接回车三次。

切换到.ssh目录下:cd /root/.ssh

查看公钥id_rsa.pub文件:cat id_rsa.pub

完整复制该文件内容,然后点击GitLab右上角个人中心,进入settings/ssh keys页面,添加SSH Key。成功之后的页面:
在这里插入图片描述
但是git clone报错:
在这里插入图片描述
网上搜了下,首先需要确保ssh测试可以联通:
在这里插入图片描述
ssh失败,怀疑不是走的默认的22端口,修改GitLab ssh协议端口。

参考CentOS 8安装并配置GitLab 13记录
编辑配置文件:
vim /etc/gitlab/gitlab.rb
输入/gitlab_rails['gitlab_shell_ssh_port'],发现搜索不到任何内容,于是尝试添加如下配置内容:
gitlab_rails['gitlab_shell_ssh_port'] = 22

注:正常情况下,配置内容都是注释掉的,我们在安装GitLab Server时只需要取消注释即可。这里为啥没有ssh相关配置?个人分析认为ssh协议不太安全,GitLab建议我们使用https协议来访问代码仓库。

注意每次修改该配置文件后,都需要执行:

gitlab-ctl reconfigure
gitlab-ctl restart

再次尝试执行命令:ssh git@192.168.0.149,得到如下输出:

PTY allocation request failed on channel 0
Welcome to GitLab, @root!
Connection to 192.168.0.149 closed.

再次尝试git clone git@192.168.0.149:zhsh/file-center.git,不再需要输入密码,代码成功克隆下来。

参考

ssh方式请求gitlab需要密码解决方法
gitlab ssh 需要 password

  • 21
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnny233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值