1. 说明
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
虽然git不必依赖一个中心化的仓库来工作, 但是中心化的仓库也能带来很多好处, 比如方便团队写作, 本文主要讲述, 如何配置git服务器, 让多人通过ssh协议的方式访问服务器端的代码仓库.
2. 第一步: 在Centos7上安装git
3. 第二步: 配置git用户
3.1. 添加git用户
1 2 3 4 5
| adduser git
adduser git
vi /etc/passwd
|
修改git用户的login shell.
为什么要修改login shell呢?
- 其一是出于安全考虑, 当你将对方用户的public key添加到authorized_key文件后, 如果git用户的登录shell依然是/bin/bash, 理论上其他用户是可以以git用户登录到服务器的, 这样会很不安全. 我能允许其他用户做的仅仅是clone, push, pull等操作.
- 其二 如果不改为git-shell其他用户也不能正常使用git
- 下面是git用户设置修改前和修改的比较
1 2 3 4
| 原始值 git:x:1000:1000::/home/git:/bin/bash 修改后值 git:x:1000:1000::/home/git:/usr/bin/git-shell
|
4. 第三步 配置sshd服务
我们知道git客户端可以使用ssh协议 或者https协议与服务器通信. 这里我们在服务器端配置的是ssh协议
4.1. 首先, 开启 SSH RSA 验证
1 2
| vi /etc/ssh/sshd_config
|
修改一下一些配置
1 2 3
| 原始值 修改后值 #RSAAuthentication yes RSAAuthentication yes #PubkeyAuthentication yes PubkeyAuthentication yes
|
修改连接超时时间
1 2 3 4 5 6 7 8 9
| 原始值
#ClientAliveInterval 0 #ClientAliveCountMax 3
修改后值
ClientAliveInterval 0 #修改保持连接时间, ClientAliveCountMax 3 #修改保持连接次数。
|
设置ssh超时断连
在HOSTNAME
HISTIZE
后追加timeout超时时间
MOUT=600;600表示超过300秒无操作即断开连接。
并确保 “AuthorizedKeysFile” 的值为 “.ssh/authorized_keys”。
重启 SSH 服务。
1
| systemctl restart sshd.service
|
5. 第四步 创建首个仓库
1 2 3 4 5 6 7 8 9
| cd /home/git
git init --bare [name].git
chown -R git.git [name].git chown -R git.git /home/git/.ssh/
|
6. 第五步 授权用户访问
1 2 3 4 5 6
| mkdir /home/git/.ssh
cd /home/git/.ssh
touch /home/git/.ssh/authorized_keys
|
注意: 客户端使用ssh-keygen生成公钥私钥对, 如果已经有公钥, 可直接将公钥添加到服务器端的授权访问文件/home/git/.ssh/authorized_keys
7. 第五步 客户端克隆项目
客户端
1 2
| git clone git@[server ip]:/home/git/[name].git
|
如果能成功克隆项目, 表示服务器端安装和配置成功. 如果不能, 检查网络连接, 检查防火墙等等.
8. 关联阅读
Centos7上源码安装git2.x
gitlab安装升级及迁移
gitlab-runner安装与配置
如何配置git push