整合版 适用于CentOS7

2017年3月29日 0:10:46


目录

安装 git

$ sudo apt-get install git

在服务器上部署 Git

1.在服务器上创建一个新用户

adduser git

设置访问权限

有几个办法可以让团队的每个成员都有访问权:

  1. 给每个人建立一个账户。反复使用 adduser 并给所有人设定临时密码比较麻烦。
  2. 在服务器上建立一个 Git 账户,让每个需要写权限的人发送一个 ssh 公钥,然后将其加入 Git 账户的 ~/.ssh/authorized_keys 文件。这样,所有人都将通过 Git 账户访问主机。
  3. 另一个办法是让 ssh 服务器通过某个 LDAP 服务,或者其他已经设定好的集中授权机制,来进行授权。

这里我们使用第二种方法,收集所有需要登录该 Git 服务器用户的公钥,就是他们自己的 id_rsa.pub 文件,把所有公钥导入到 /home/git/.ssh/authorized_keys 文件里,每行一个。(注意:/home/git/.ssh/authorized_keys 这个文件的 owner 为 Git ,如果不是请使用 chown 命令修改)。

下面是创建公钥命令:

$ ssh-keygen -t rsa -C  'your email@domain.com'

-t 指定密钥类型,默认即 rsa ,可以省略

-C 设置注释文字,比如你的邮箱

关于创建公钥的详细信息,可以参考 http://github.com/guides/providing-your-ssh-key

2.创建一个git仓库

** 注意: 用git用户登录,然后进行以下操作 **

cd /data/git //切换到希望创建工作区的目录
git init --bare sample.git //创建一个Git仓库,此时Git会创建一个唯一分支master
chown -R git:git sample.git//将sample.git的所有权从root修改到新创建的git (重要,如果是git用户操作,则不需要此操作)

3.在服务器端打开RSA认证(重要)

编辑 etc/ssh/sshd_config

去掉以下几行的注释, 开启公钥认证登陆 。

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
AuthorizedKeysCommand none
AuthorizedKeysCommandRunAs nobody

如果需要禁止使用密码登录,可以设置

PasswordAuthentication no

重启ssh

service sshd restart

创建用于存放客户端公钥的文件

其中.ssh和authorized_keys文件都是git权限(重要)

cd /home/git //切换到刚刚创建的git用户目录下
mkdir .ssh
vim authorized_keys //创建用于存放客户端公钥的文件

SSH对公钥、私钥的权限和所有权的要求是非常严格的,总结如下:

设置.ssh目录权限

$ chmod 700 -R .ssh

设置authorized_keys权限

$ chmod 600 authorized_keys

要保证.ssh和authorized_keys都只有git用户自己有写权限。否则验证无效。

4.在客户端创建SSH key

ssh-keygen -t rsa -C "sample@geekzhou.com"

该命令会在用户主目录的.ssh文件夹下生成两个文件:用于保存私钥的id_rsa和用于保存公钥的id_rsa.pub

5.把步骤4生成的公钥导入服务器

将生成的id_rsa.pub中的内容拷贝到服务器文件/home/git/.ssh/authorized_keys

6.在客户端clone远程git仓库

git clone ssh://git@23.105.219.141:26397/home/data/sample.git
其中23.105.219.141:26397是服务器端的IP地址和端口
(由于进行了步骤4和步骤5的设置,所以在clone仓储的时候就无需再输入密码了)

注意是使用ssh协议访问git私服

7.禁止用户git通过shell进行登录

由于进行了步骤4和步骤5的设置,此时客户端可以通过ssh git@115.28.222.133 直接登录到服务器,如需禁止,修改文件/etc/passwd:

将git:x:1000:1000::/home/git:/bin/bash
修改为:git:x:1000:1000::/home/git:/usr/bin/git-shell

参考:

http://wlog.cn/soft/git-ssh-server-for-debian.html

https://segmentfault.com/a/1190000008403740

http://geeksun.iteye.com/blog/2221671

git私服的更多相关文章

  1. git 入门教程之 git 私服搭建教程

    git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...

  2. Git私服搭建

    Git私服搭建 一.Git服务器搭建方式 GIT是一个分布式版本管理系统,既然是分布那么必定会涉及远程通信,那么GIT是采用什么协议进行远程通信? Git支持的四种通信协议: Local(本地协议) ...

  3. CentOS 7下使用Gitolite搭建Git私服

    1. 搭建环境 CentOS7, git version 1.8.3.1 2. 安装依赖包 yum install curl-devel expat-devel gettext-devel opens ...

  4. yum安装GitLab-v11.11.8(git私服)

    GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务.(跟github.gitee类似) 1. 安装依赖软件 $ yum -y install ...

  5. CentOS环境下使用GIT基于Nginx的私服搭建全过程

    阅读本文前你必须预先装好CentOS并且已经安装和配置好Nginx了. 安装GIT私服套件 安装centos6.5-centos7.0 安装nginx yum install -y?git gitwe ...

  6. 《个人-GIT使用方法》

    使用GIT版本控制工具及基本使用方法(安装,新建,推送,拉取),托管平台的使用方法. Git 常用命令 git init here -- 创建本地仓库(repository),将会在文件夹下创建一个 ...

  7. CentOS搭建Git服务器及权限管理

    声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考. 1. 系统环境 系统: Linux:CentOS 7.2 64位 由于CentOS已经内置了OpenSS ...

  8. git工具使用说明

    一.什么是git?     Git是分布式版本控制系统      概念: 工作区:就是你在电脑里能看到的目录: 暂存区:一般存放在(.git/index)中,所以我们把暂存区有时也叫作索引(index ...

  9. 搭建企业git代码版本管理所需工具

    此片文章纯属记录一下使用gitlab搭建私有git版本管理的一些工具及概念. 先记录一下概念 git         是一种版本控制系统,是一个命令,是一种工具 github   是一个基于git实现 ...

随机推荐

  1. 使用postMessage通信,未触发message事件

    前提: 父子页面跨域通信,使用postMessage技术 a页面为父页面,b页面为子页面 a中包含多个iframe,部分域名是相同的,目录层级不一致,地址使用变量根据触发的条件不同拼接地址 部分代码( ...

  2. Chrome控制台毫无反应,打印不出信息了?

    最近在使用console.log()方法的时候遇到一个奇怪的问题,打开chrome控制台想调试代码,结果控制台半天无反应,让我纳闷了半天.详情如图所示: 然后我又打开了新的标签页,不行!接着干脆关闭浏 ...

  3. How to fix Mysql table crashes

    Whenever you enconter this: Please use mysql_upgrade to fix this error. or using  mysql_upgrade -u r ...

  4. js时间戳转换日期

    //js时间戳转换日期function formatDate(now) { var year=now.getFullYear(); var month=now.getMonth()+1; var da ...

  5. linux用户的增加与删除

    sudo useradd xxx 仅仅是添加用户, 不会在home目录添加帐号很简单 Ubuntu中提供了两种方式 图形界面 增加 和 Windows 一样 ,还有一种就是 Linux传统的 增加方法 ...

  6. byr面经两则

    人人,金山西山居,腾讯互娱,微信,网易游戏offer及面经 首先感谢师兄在两年前发的贴([天道酬勤] 腾讯.百度.网易游戏.华为Offer及笔经面经 ),这篇文章对我帮助很大. 我写这篇文章一是为了感 ...

  7. matlab中的决策树

    1.函数 view(t)%画出决策树 prune %剪枝决策树 t2=prune(t,'level','level'/'node')%level:0 不剪枝 1 剪掉最后一层 2 最后两层%node: ...

  8. 获取当前模块句柄(dll、exe)

    HMODULE getCurrModuleHandle(){ MEMORY_BASIC_INFORMATION info; ::VirtualQuery((LPCVOID)(&getCurrM ...

  9. c++计算器后续(4)

    自娱自乐: 大概是终于做到没做完的部分了,第三步助教学长的评论还没去改,感觉那个把读取文件放到Scan里面比较麻烦,其他大概还好.以上. 文件读写: 先是原来的残留问题,都是和fstream :: o ...

  10. 【RabbitMQ】3、工作队列模式(work模式)

    上一篇博客的作为rabbitMQ的入门程序,也是简单队列模式,一个生产者,一个消费者,今天这篇博客介绍work模式,一个生产者,多个消费者,下面的例子模拟两个消费者的情况. 图示:         一 ...