笔记一、Git服务器【转】

简介: 传输协议: 本地传输,SSH协议,Git协议,HTTP协议   git clone /home/git/project.git                      // 本地clone git clone ssh://user@server:/home/git/project.
传输协议: 本地传输,SSH协议,Git协议,HTTP协议
 
git clone /home/git/project.git                      // 本地clone
git clone ssh://user@server:/home/git/project.git     // 使用SSH协议clone, 可读写
git clone user@server:/home/git/project.git           // 默认使用SSH协议clone, 可读写
git clone http://example.com/git/project.git         // 使用HTTP协议clone, 只读
 
git clone --bare /home/myproject myproject.git       // clone为纯仓库
 
 
帐号管理方法
(ssh密钥方式有待研究, 群组方式可以)
 
最常用的帐号管理方法为: 
   在主机上建立一个 git账户,
   让每个需要写权限的人发送一个SSH公钥,然后将其加入git账户的 ~/.ssh/authorized_keys文件
 
1、服务器创建git用户
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh
 
2、开发者生成SSH公钥
$ su cxt
$ cd
$ mkdir .ssh
$ cd ssh
$ ssh-keygen    // 创建公钥私钥 id_rsa, id_rsa.pub
 
3、导入公钥到git用户的ssh目录下
$ su git
$ cd
$ cat /home/cxt/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 
4、参考服务器搭建方式
 
5、git用户登录的防范措施
$ sudo vim /etc/passwd
$ git:x:1000:1000::/home/git:/bin/bash  改为
$ git:x:1000:1000::/home/git:user/bin/git-shell   // git用户只能用SSH连接来推送和获取git仓库, git用户不能使用主机shell了
 
$ su git
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
 
$ ssh git@192.168.3.254     // 只能通过ssh访问git用户
 
 
6. 群组管理
   git用户所属群一般为git
$ grep 'git' /etc/group /etc/gshadow
/etc/group:git:x:1003:
/etc/gshadow:git:!::
 
将cxt用户加入git群组
$ gpasswd -a cxt git
 
更改/home/git下xxx.git目录群组权限
$ sudo chmod g+w -R /home/git/xxx.git
 
屏蔽/home/git/.ssh目录权限
$ sudo chmod 700 -R /home/git/.ssh     // 所有人都不能看到公钥
 
 
服务器搭建方式:
 
git init --bare     // 服务器
 
# 在John电脑上
$ cd myproject
$ git init
$ git add .
$ git commit -m "initial commit"
$ git remote add origin user@server:/home/git/project.git    // 远程分支第一个版本
$ git push origin master
 
# 在Josie电脑上
$ git clone user@server:/home/git/project.git
$ vim README
$ git commit -am "fix for the README file"          // 其他人clone与推送
$ git push origin master
 
 
客户端提交常见错误:
 
1. remote: error: insufficient permission for adding an object to repository database ./objects
  服务端没有可写目录的权限
  sudo chmod -R g+w xxx.git/.objects
 
2. $ ssh git@192.168.3.254
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to 192.168.3.254 closed.
 
原因:
    按照提示,在git用户的主目录下面需要存在git-shell-commands目录
【作者】 张昺华
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【facebook】 张昺华 zhangbinghua
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
目录
相关文章
|
3月前
|
存储 Java 开发工具
WinServer服务器上搭建Git代码库
本文介绍如何在WinServer服务器上搭建Git代码库。
73 0
|
5月前
|
开发工具 git
服务器定时自动拉取Git仓库代码自动部署
服务器定时自动拉取Git仓库代码自动部署
128 0
|
2月前
|
安全 Shell 网络安全
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
130 0
|
4月前
|
存储 Linux 网络安全
Git - Centos7下安装GitLab服务器
Git - Centos7下安装GitLab服务器
96 1
|
6月前
|
网络安全 开发工具 git
如何搭建你自己的 Git 服务器呢?
假如您既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。
如何搭建你自己的 Git 服务器呢?
|
6月前
|
Linux 网络安全 开发工具
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
Git学习---Git快速入门、Git基础使用、Git进阶使用、Git服务器使用(IDEA集成GitHub、Gitee、GitLab)、GitHub Desktop客户端
|
8月前
|
缓存 网络协议 Linux
CentOS 服务器 git clone下载加速(下载过慢或超时)
CentOS 服务器 git clone下载加速(下载过慢或超时)
1071 0
|
11月前
|
算法 安全 Linux
Git 分布式版本控制工具 05SSH免登陆:如何使用SSH如何免密登录服务器~
SSH是目前比较可靠的专为远程登录会话和其他网络服务提供安全的协议。不同主机之间在进行通信时,一般都是需要输入密码进行验证, ssh免密码之后,只要通过指定主机地址和端口号就可以实现不同的计算机之间访问时,不需要密码实现直接访问。ssh免密码登录主要采用算法有:对称加密算法和非对称加密算法。
137 0
|
11月前
|
IDE Linux 开发工具
git clone 从GitHub上下载项目到服务器上运行+创建虚拟环境
可先进入需要放置文件的路径之下
936 0
|
开发工具 git Python
Git:Python代码开发到服务器上测试实践
Git:Python代码开发到服务器上测试实践
137 0