git push上传代码到gitlab上,报错401/403(或需要输入用户名和密码)
之前部署的gitlab,采用ssh方式连接gitlab,在客户机上产生公钥上传到gitlab的SSH-Keys里,git clone下载和git push上传都没问题,这种方式很安全。
后来应开发同事要求采用http方式连接gitlab,那么首先将project工程的“Visibility Level”改为“Public”公开模式,要保证gitlab的http端口已对客户机开放。
后面发现了一个问题: http方式连接gitlab后,git clone下载没有问题,但是git push上传有报错: error: The requested URL returned error: 401 Unauthorized while accessing http://git.xqshijie.net:8081/weixin/weixin.git/info/refs fatal: HTTP request failed
或者 The requested URL returned error: 403 Forbidden while accessing
实例如下: 假设git的url为http://git.wangshibo.net [root@test-huanqiu ~]# mkdir /root/git [root@test-huanqiu ~]# cd /root/git [root@test-huanqiu git]# git init . [root@test-huanqiu git]# git clone http://git.wangshibo.net:8081/weixin/weixin.git Initialized empty Git repository in /root/git/weixin/.git/ remote: Counting objects: 10, done. remote: Compressing objects: 100% (6/6), done. remote: Total 10 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (10/10), done.
上面可以看出,已经能成功git clone下代码 [root@test-huanqiu git]# ll total 4 drwxr-xr-x. 3 root root 4096 Nov 30 15:58 weixin [root@test-huanqiu git]# cd weixin/ [root@test-huanqiu weixin]# ll total 8 -rw-r--r--. 1 root root 15 Nov 30 15:58 heihei -rw-r--r--. 1 root root 1 Nov 30 15:38 README.md
现在测试下git push [root@test-huanqiu weixin]# git rm heihei [root@test-huanqiu weixin]# touch test.file [root@test-huanqiu weixin]# echo "123456" > test.file [root@test-huanqiu weixin]# git add . [root@test-huanqiu weixin]# git commit -m "this is a test" [root@test-huanqiu weixin]# git push //或者git push -u origin master error: The requested URL returned error: 401 Unauthorized while accessing http://git.wangshibo.net:8081/weixin/weixin.git/info/refs
fatal: HTTP request failed
解决办法: 在代码的.git/config文件内[remote "origin"]的url的gitlab域名前添加gitlab注册时的“用户名:密码@” 另外发现这个用户要在对应项目下的角色是Owner或Master才行,如果是Guest、Reporter、Developer,则如下操作后也是不行。 如下,gitlab的用户名是wangshibo,假设密码是HU@wew12378!h8
查看gitlab界面里的登陆用户名:
然后修改代码里的.git/config文件 [root@test-huanqiu weixin]# cd .git [root@test-huanqiu .git]# cat config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = http://git.wangshibo.net:8081/weixin/weixin.git [branch "master"] remote = origin merge = refs/heads/master 修改如下: [root@test-huanqiu .git]# cat config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = http://wangshibo:HU@wew12378!h8@git.wangshibo.net:8081/weixin/weixin.git [branch "master"] remote = origin merge = refs/heads/master
然后再次git push,发现可以正常提交了! [root@test-huanqiu weixin]# git push Counting objects: 4, done. Delta compression using up to 8 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 297 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To http://wangshibo:HUIhui1987521@git.xqshijie.net:8081/weixin/weixin.git 8fcb559..6c97b56 master -> master
------------------------------------------------------------------------------------------------------------------------------------ 可以创建一个用户名作为admin管理员,然后将这个用户名和密码添加到项目代码的.git/config里面,如上操作! 如果不是管理员,则至少对当前代码具有owner或master权限。
这样,在.git/config文件里添加这个用户名和密码权限,然后其他人在git push的时时候都使用这个文件进行覆盖。
其他人在首次git clone下载代码的时候,需要进行--global全局配置,然后就可以在gitweb控制台里追踪到每个操作者的提交记录了!
- 使用dbms_parallel_execute来完成DML的并行(r3笔记第1天)
- 有趣的linux命令总结(78天)
- 生产环境sql语句调优实战第七篇(r2笔记99天)
- 一个普通数据库用户所能查到的"意料之外"的信息(r2笔记98天)
- 查看并行进程的一些简单信息(r3笔记第17天)
- 多行数据的批处理之bulk collect(r3笔记第16天)
- pl/sql中错误的异常处理 (r3笔记第15天)
- 关于session leak的问题分析(r3笔记第13天)
- 执行计划的偏差导致的性能问题(r3笔记第12天)
- 关于评审开发人员的sql语句(r3笔记第11天)
- 性能下降的不定时炸弹_过旧的sql_profile(r3笔记第9天)
- 关于抓取session信息的一个脚本(r3笔记第8天)
- oracle PL/SQL中的重载 (r3笔记27天)
- 使用Python进行描述性统计
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 活见鬼,明明删除了数据,空间却没减少!
- 原创 | Git仓库的提交记录乱成一团,怎么办?
- 原创 | 平面内有N个点,如何快速求出距离最近的点对?
- 原创 | codeforces 1426F,初学者也能做,div3的最难题
- 安全研究 | YARA规则阻止Windows事件日志记录
- 研究人员如何使用Shhgit搜索GitHub中的敏感数据
- 使用nProbe监控移动网络(2G,3G和LTE)
- Mykings僵尸网络新变种已感染超5万台电脑
- 谁告诉你鸿蒙(HarmonyOS)不能在macOS下玩,一副没见过世面的样子!
- 连Python产生器(Generator)的原理都解释不了,还敢说Python用了5年?
- WordPress插件File-Manager任意文件上传复现
- CVE-2020-15778:OpenSSH命令注入漏洞复现
- TokyoWesterns CTF 6th 2020 部分WP
- 极客巅峰2020 部分WriteUp
- norecon:一款自动化recon工具