Git服务器搭建--实践篇

2020-06-21  本文已影响0人  As_breath

下载安装 git

Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

此实验以 CentOS 7.2 x64 的系统为环境,搭建 git 服务器。


安装依赖库和编译工具

为了后续安装能正常进行,我们先来安装一些相关依赖库和编译工具

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

安装编译工具

yum install gcc perl-ExtUtils-MakeMaker

下载 git

选一个目录,用来放下载下来的安装包,这里将安装包放在 /usr/local/src 目录里

cd /usr/local/src

到官网找一个新版稳定的源码包下载到 /usr/local/src 文件夹里

wget https://www.kernel.org/pub/software/scm/git/git-2.10.0.tar.gz

解压和编译

解压下载的源码包

tar -zvxf git-2.10.0.tar.gz

解压后进入 git-2.10.0 文件夹

cd git-2.10.0

执行编译

make all prefix=/usr/local/git

编译完成后, 安装到 /usr/local/git 目录下

make install prefix=/usr/local/git

配置环境变量

将 git 目录加入 PATH

将原来的 PATH 指向目录修改为现在的目录

echo 'export PATH=$PATH:/usr/local/git/bin' >> /etc/bashrc

生效环境变量

source /etc/bashrc

此时我们能查看 git 版本号,说明我们已经安装成功了。

git --version

创建 git 账号密码

创建 git 账号

为我们刚刚搭建好的 git 创建一个账号

useradd -m gituser

然后为这个账号设置密码

passwd gituser

控制台输入创建密码后,输入您自定义的密码,并二次确认。

初始化 git 仓库并配置用户权限

创建 git 仓库并初始化

我们创建 /data/repositories 目录用于存放 git 仓库

mkdir -p /data/repositories

创建好后,初始化这个仓库

cd /data/repositories/ && git init --bare test.git

配置用户权限

给 git 仓库目录设置用户和用户组并设置权限

chown -R gituser:gituser /data/repositories

chmod 755 /data/repositories

[查找 git-shell 所在目录] , 编辑 /etc/passwd 文件,将最后一行关于 gituser 的登录 shell 配置改为 git-shell 的目录[?]如下

示例代码:/etc/passwd

gituser:x:500:500::/home/gituser:/usr/local/git/bin/git-shell

如果按照刚才的步骤执行, 这个位置应该是 /usr/local/git/bin/git-shell, 否则请通过 which git-shell 命令查看位置

安全目的, 限制 git 账号的 ssh 连接只能是登录 git-shell

使用搭建好的 Git 服务

克隆 test repo 到本地

cd ~ && git clone gituser@<您的 CVM IP 地址>:/data/repositories/test.git

客户端Git操作免密(假设当前处于root账户,服务端git指定账户为gituser)

1、使用SSH协议

1.1在服务器指定的git专用账户主目录下,查看是否存在 .ssh文件夹,是否存在.ssh/authorized_keys文件,如果不存在,则通过

cd /home/gituser

mkdir .ssh && chmod 700 .ssh

touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

(非gituser用户创建的情况下,需要额外将文件归属权赋予gituser)

chown -R gituser:gituser .ssh/authorized_keys

( 要保证.ssh和authorized_keys都只有用户自己(root除外)有写权限。否则验证无效  )

(以上方法可通过解除gituser shell限制,切换到该用户下,在运行ssh-keygen -t rsa 生成)

1.2在客户端主目录找到 .ssh目录下的id_rsa.pub文件,拷贝到服务端 authorized_keys文件即可(一个客户端id 一行)

$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys

$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys

如客户端未生成公钥,则运行

ssh-keygen -t rsa -C 'xxxx@email.com'

生成对应的公钥,再上传服务器。

其后,在客户端即可指定ssh协议克隆git工程

git clone gituser@gitserver:/data/repo/test.git

如果已经使用https协议克隆了,那么按照如下方法更改协议(未验证):

git remote set-url origin gituser@gitserver:/data/repo/test.git

2、添加git config(未验证)

git config --global credential.helper store

执行此命令后,用户主目录下的.gitconfig文件会多了一项:[credential]

helper = store

重新git push就不需要用户名密码了

3、使用文件创建用户名和密码(未验证)

文件创建在用户主目录下:

touch .git-credentials

vim .git-credentials

https://{username}:{password}@github.com       

参考链接:

https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E9%85%8D%E7%BD%AE%E6%9C%8D%E5%8A%A1%E5%99%A8

https://gitee.com/progit/4-%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git.html#4.4-%E6%9E%B6%E8%AE%BE%E6%9C%8D%E5%8A%A1%E5%99%A8

https://todebug.com/Tips/

上一篇下一篇

猜你喜欢

热点阅读