git服务器搭建 linux,centos配置git

  git服务器搭建 linux,centos配置git

  声明:本教程,仅作为配置的记录,不展开细节,要求你有一点linux的命令基础,仅作为配置参考。

  1.系统环境

  系统:Linux:CentOS 7.2 64位

  由于CentOS内置了OpenSSH,如果你的系统没有,请自行安装。

  检查ssh版本

  $ ssh -V

  #输出以下表示没有问题,可以继续。版本可能不一致,就用吧。

  OpenSSH_6.6.1p1,OpenSSL 1 . 0 . 1 e-FIPS 2013年2月11日

  为了避免系统环境与其他环境之间的不一致,请检查您的系统版本,并相应地修改其他发行版。

  2.安装git

  建议采取以下措施切换到root用户。

  #请确保您切换到root帐户

  $ su根

  $ yum install -y git #验证安装是否成功$ git - version #输出以下内容以表示成功:git version x.x.x.x

  3.添加git的托管账户并设置密码。

  设置一个专用于管理git的帐户不是必需的,但是建议这样做。

  #添加git帐户

  $ adduser git

  #修改git的密码$ passwd git #然后输入git的密码两次进行确认。#看git是否安装成功$ cd /home ls -al #如果已经有git,那么就表示为,参考如下:DRWXR-XR-x . 5 root root root 4096 apr 4 15:03。DR-XR-XR-X.19根根根4096 APR4 15: 05.DRWX-10 git git 4096 APR4 00: 26 git #默认情况下,我们还被赋予一个名为

  4.Git的权限管理

  git仓库的权限管理可以手工管理和配置,也可以通过其他辅助工具进行管理和配置。如果是小团队,可以通过ssh公钥直接管理。如果是更大的团队,最好用gitolite或者gitosis,两者都差不多,一个是Perl开发,一个是Python开发。

  下面我将分别介绍手动管理权限和使用gitolite的方式。注意,两者是不相容的,不能混用。

  5.Git的手动权限管理

  经过以上步骤,其实服务器已经基本配置好了,只是需要设置权限,配置远程访问git库的方式。我们只介绍ssh,https不介绍。

  5.1配置服务器的ssh访问

  切换到git帐户,创建ssh的默认目录和用于验证公钥的配置文件。

  # 1.切换到git帐户

  苏吉特

  # 2.转到git帐户$ cd /home/git # 3的主目录。创建的配置。嘘。如果此文件夹已经存在,请忽略此步骤。$ mkdir。ssh # 4。转到新创建的。ssh目录并创建authorized_keys文件,该文件存储客户机远程访问的ssh的公钥。$ cd/home/git/。ssh $ touch authorized _ keys # 5。设置权限。这一步不能省略,也不要更改permissions值,否则会报错。$ chmod 700 /home/git/。ssh/$ chmod 600 /home/git/。ssh/授权密钥

  至此,服务器的配置基本完成。接下来,您需要将客户机的公钥复制到authorized_keys文件中。

  5.2配置客户端的ssh私钥,并上传到服务器

  下面是客户端创建ssh私有密钥和副本的过程,如果您有一个超出创建私有密钥过程的私有密钥。

  请使用您的客户端进入终端(如果只有一台计算机,您可以使用不同的帐户来模拟不同的客户端)

  步骤1:创建客户机的ssh私有密钥和公共密钥

  检查您是否已经拥有ssh公钥和私钥:输入用户的主目录。

  用户目录:

  Windows系统:C:Users用户名

  Linux系统:/home/用户名

  Mac系统:/用户/用户名

  然后检查是否有。ssh文件夹,以及该文件夹下是否有以下文件。

  #在……用户主目录的ssh文件夹

  身份证_rsa

   id_rsa.pub #我们要使用的私钥

  如果没有,那么使用ssh-keygen创建ssh的私有密钥。

  $ ssh-keygen -t rsa

  #接下来,默认使用三个回车符。

  成功创建私钥后,检查用户目录是否有意添加了公钥文件id_rsa.pub

  步骤2:将私钥复制到git的服务器上

  如何将客户端文件复制到服务器?我建议用scp命令复制。

  以下面的mac系统为例:

  #首先,输入。我的用户的主目录的ssh目录,注意用户名xxx被替换为您自己的。

  $ cd /Users/xxx/。ssh #下面的命令是:将本地的id_rsa.pub文件复制到aicoder.com服务器,登录aicoder.com服务的账号是git。#冒号后默认是git账号的主目录。最后文件另存为laoma.pub #注意:把域名改成自己的或者ip,最后的文件名可以自己设置,后面还是有用的。$ scp。/id_rsa.pub git@aicoder.com:宋承宪/老马. pub

  5.3服务器端添加客户端的SSH公钥

  切换到服务器端,将刚刚上传的laoma.pub文件的内容添加到authorized_keys,这样就可以允许客户端ssh访问了。

  #切换到git帐户

  苏吉特

  $ cd /home/git/。检查。authorized_keys和laoma.pub文件的ssh目录#。# -authorized _ keys # `-laoma.pub #如果是这样,则执行以下操作将laoma . pub文件的内容添加到authorized _ keys。$ cat laoma.pub authorized_keys #表示追加到文件后面。主要是,如果使用其他编辑器,每个ssh pub应该在单独的行上。为了方便和简单,建议使用cat命令。

  到目前为止,您配置的客户端应该可以通过ssh使用git帐户直接登录到服务器。(当然不安全,后期可以控制)

  #在客户端使用ssh测试连接到远程服务器。请将域名aicoder.com更改为您的ip地址或域名。

  $宋承宪git@aicoder.com

  #第一次连接有警告,只需输入yes继续。如果可以连接,恭喜你的ssh配置。

  5.4在服务器端创建一个测试git仓库

  输入服务器的终端。

  #切换到git帐户

  苏吉特

  #输入git帐户的用户主目录。

  $ cd /home/git #在用户的主目录中创建test.git存储库的文件夹

  $ mkdir test.git cd test.git #初始化test.git目录中的git存储库

  $ gitinit-bare #输出以下内容,表明/home/git/test.git/中的空git储存库初始化成功

  Git init - bare是在当前目录中创建一个空仓库,也就是说工作区中没有文件,隐藏在Git仓库中的文件直接放在当前目录中,当前目录只用来存储仓库的版本历史等数据。

  此时,客户端可以克隆或远程添加该仓库。

  5.5客户端测试连接git远程仓库

  客户端可以创建一个新文件夹,初始化一个仓库,然后与远程服务器上的空仓库建立连接。

  #下面的外壳代码不是纯手写验证的。如有错误,请自行更正。

  $ mkdir demos CD demos $ git init $ touch a . txt $ echo ai coder . com a . txt

  $ git add。$ git commit -m 第一次提交

  #添加当前仓库和远程仓库之间的映射$ git remote Add origin git @ ai coder . com:test . git

  #将当前仓库推送到远程仓库。$ git push -u原始主机

  到目前为止,我们可以尽情享受git私有服务器,但是!但是!但是!客户端可以直接ssh登录,这是一个bug,是一个不安全的隐患。参见下面如何禁用git帐户的shell登录。

  5.6禁止客户端外壳登录

  因为我们前面把客户端的ssh的公钥加到了远程服务器上,所以客户端可以直接通过shell登录服务器,这是不安全的,也不是我们想要的。并查看下面如何禁用shell登录:

  第一步:

  在/home/git下创建一个git-shell-commands目录,并将该目录的所有者设置为git帐户。可以用git账号直接登录服务器端。

  苏吉特

  $ mkdir/home/git/git-shell-命令

  这个文件夹是git-shell使用的目录,我们需要手动创建,否则会报错:致命:交互式git shell未启用提示:~/git-shell-commands应该存在,并且具有读取和执行权限。

  第2步:修改/etc/passwd文件并修改

  $ vim /etc/passwd

  #您可以通过vim的常规搜索快速导航到该行。在命名模式下:/git:x

  #找到这个句子,注意1000可能是其他数字Git:x:1000:1000:/home/Git:/bin/bash

  #改成:git:x:1000:1000:/home/git:/bin/git-shell #。最好不要直接改。可以先复制一行,再注释掉一行,修改一行,保留原来的。这就是体验!# vim快捷键:在命令模式下:yy复制行,P粘贴0光标到行首$到行尾X删除一个字符I进入插入模式#修改后退出save: esc进入命令模式,输入:wq!保存并退出。

  好了,此时我们不用担心客户端通过shell登录,只允许git-shell管理git的仓库。

  如果还有其他朋友想连接git服务器,只需要将自己的公钥添加到authorized_keys即可。

  7.Git的自动权限管理:gitolite(不要和上面的步骤混在一起!)

  如果团队比较大,我们可以用gitolite来管理,也很好用。

  7.1 Gito Lite的安装和配置

  配置下面的步骤5。如果您已经操作了步骤6,请注意步骤2的说明。

  步骤1:添加gitolite所依赖的perl包。

  $ yum install perl(Data:Dumper)

  步骤2:清除服务器端配置的ssh公钥。

  确定:~/。ssh/authorized_keys文件为空,或者不存在。如果已经存在,建议你重新命名,比如:authorized_keys.bak

  步骤3:将管理员客户端的ssh公钥上传到服务器。

  将管理员计算机的ssh的id_rsa.pub文件复制到服务器的:$ home/yourname.pub。

  YourName可以自定义,最好根据不同伙伴的名字来命名。

  参考:

  # mac客户端

  $ scp /Users/fly/。ssh/id _ RSA . pub git @ ai coder . com:malun . pub

  步骤4:安装和配置gitolite

  使用git帐户登录并执行以下命令。

  #切换到git帐户

  苏吉特

  #转到git主目录$ cd /home/git

  #下载gitolite的仓库$ git clone https://github.com/sitaramc/gitolite

  #创建bin文件夹,您必须!$ mkdir -p $HOME/bin #在下载的仓库中用insall执行安装操作,指向的目录是目录$。/gitolite binary/install-to $ HOME/bin # setup将管理员的公钥上传到服务器到gitolite中。注意:将YourName.pub改为您自己的文件名。$ ~/bin/gitolitesetup-PK ~/your name . pub #安装完成后,检查git主目录$ ls/home/gitdrwxr-xr-x7 git git 4096 ar 3 23:50 bin #二进制DRWXRWXR-X6 git 4096 apr 3 23:40 git lite DRWX-6 git git 4096 apr 3 23:52。git lite-RW-1 git git 7130 Apr 3 23:5 2 . gito lite . RC-RW-1 git git 398 Apr 3 23:39 malun . pub #管理员公钥drwxrw-3git git4096ar3 23: 40。PKI-rw-1 git git 19 ar 4 00:26 projects . list # list(由gitolite自动创建)drwx-5 git git 4096 ar 4 00:26 repositories #-2 git git 4096 ar 4 15:50 . ssh # repositories目录中已经有两个git repositories。#.# - gitolite-admin.git #用于管理配置权限的存储库# ` - testing.git #测试存储库

  好了,在这个位置,管理员可以直接将默认的远程管理仓库gitolite-admin克隆到本地来管理git服务。

  步骤5:管理员在本地管理和配置服务器端仓库。

  下载服务器上的远程管理仓库

  #下载远程管理仓库,请将aicoder.com改为自己服务器的域名或ip。

  $ gitclongit @ ai coder . com:gitolite-admin $ CD gitolite-admin #目录结构如下:#。# conf #配置文件夹# gitolite.conf #配置权限文件# keydir #客户端公钥文件夹。

  7.2 gito lite的权限配置

  增加其他发展伙伴。

  将您合作伙伴的公钥发送给管理员。管理员将其添加到gitolite-admin warehouse的keydir目录中。注意文件名格式是username.pub,username是配置权限时的用户名。

  配置用户对仓库的读写权限。

  直接修改conf文件夹中的gitolite.conf文件。简单解释以下用法:

  回购代表仓库。如果添加了新的repo,将代表服务器创建一个空仓库。仓库推送到服务器后,会自动创建。RW代表可读可写@all代表所有人。主开发代表分支引用:

  @admin=马仑

  @om=马仑bcd

  回购gitolite-管理

  RW=马仑

  回购测试

  RW=@all

  报告om

  rw=@ adminrwmaster=@ adminrwdev=@ om将修改应用到服务器端。

  配置完成后,管理员会将修改推送到服务器,服务器会自动处理修改。

  $ git添加配置

  $ git添加密钥目录

  $ git commit -m 添加了foo,允许访问alice、bob和carol

  $ git推送

  此时,登录服务器,检查/home/git/repositories/目录中是否添加了相应的仓库。

  其实配置这些并不繁琐,但是需要有一定的linux经验。当然,你也可以选择使用GitLab或者Github。

  我希望我最后能帮助你。

git服务器搭建 linux,centos配置git