Git仓库的创建
Git服务器准备
假设Git所在服务器为Ubuntu系统,IP地址10.17.1.5。
一. 准备运行git服务的git用户,这里用户名就直接设定为git。
1. 创建一个git用户组,并创建git用户。
sudo groupadd git
sudo useradd git -g git
2. 创建git用户目录,以及密钥认证文件。
sudo mkdir -p /home/git/.ssh
sudo touch /home/git/.ssh/authorized_keys
cd /home
sudo chown -R git:git git
3. 确保git用户的认证文件权限正确。
sudo chmod 700 /home/git/.ssh
sudo chmod 600 /home/git/.ssh/authorized_keys
4. 禁用git用户shell登录。
出于安全考虑,git用户不允许登录shell。
编辑/etc/passwd文件,找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,为git用户指定的git-shell每次一登录就自动退出。
二. 安装git。
安装git:
sudo apt install git
三. 创建git仓库。
1. 先创建一个目录作为Git仓库。
Git仓库目录通常命名为*.git,假定是/data/git/demo.git。
创建目录:
mkdir -p /data/git/demo.git
将目录所有者改为git用户:
cd /data/git
sudo chown -R git:git demo.git
2. 初始化Git仓库。
cd /data/git
sudo git init --bare demo.git
四. 为使用Git服务的用户创建密钥。
1. 生成密钥文件。
假设为张三、李四两名开发者分别准备密钥。
使用ssh-keygen工具为张三创建密钥对:
ssh-keygen -t rsa
创建密钥的过程中,一路点击回车就可以了,不需要填任何东西。
生成的公钥和私钥文件默认存储在用户目录下的.ssh目录中。
例如linux系统中root用户执行ssh-keygen生成的密钥文件位于:
/root/.ssh
windows系统中dancen用户生成的密钥文件位于:
C:\Users\dancen\.ssh
其中,id_rsa.pub为公钥,id_rsa为私钥,这里重命名密钥文件为:
id_rsa_zhangsan.pub
id_rsa_zhangsan
再次使用ssh-keygen工具为李四创建密钥对:
ssh-keygen -t rsa
然后重命名密钥文件为:
id_rsa_lisi.pub
id_rsa_lisi
2. 添加公钥至Git服务器的git用户认证文件中。
把公钥添加到git服务器上git用户的认证文件/home/git/.ssh/authorized_keys。
依次把id_rsa_zhangsan.pub、id_rsa_lisi.pub的内容添加到authorized_keys中,authorized_keys内容如下:
# zhangsan
ssh-rsa ****** ad\zhangdan@gzy-20210126-02
# lisi
ssh-rsa ****** ad\zhangdan@gzy-20210126-02
3. 将私钥提供给使用Git服务的用户。
分别将id_rsa_zhangsan.pub、和id_rsa_lisi.pub提供给使用Git服务的zhangsan和lisi。
Git客户端准备
一. 在客户端部署Git私钥。
使用Git服务的用户需要将Git服务器管理员提供的私钥文件妥善存储。
以zhangsan为例,假设其使用windows系统,通常将私钥文件存储到用户目录下的.ssh目录:
C:\Users\zhangsan\.ssh
用户在使用git时默认匹配的私钥文件为:
C:\Users\zhangsan\.ssh\id_rsa
如果私钥文件没有部署在默认位置,或者没有使用默认名称id_rsa,则用户在使用git时需要临时指定私钥文件。
此时,为了避免每次都临时指定密钥文件,可通过客户端的配置文件config明确指定私钥文件和服务器的对应关系。
config文件位置:
C:\Users\zhangdan\.ssh\config
在config中添加如下内容:
Host 10.17.1.5
HostName 10.17.1.5
User git
IdentityFile ~/.ssh/id_rsa_zhangsan
如此,当用户通过ssh连接10.17.1.5服务器时,将自动使用id_rsa_zhangsan作为私钥。如果存在多个ssh服务器和私钥映射关系,则在config中继续添加配置即可。
二. 克隆git仓库。
1. 安装git。
略
1. 配置git用户身份。
git config --global user.name "zhangsan"
git config --global user.email "zhangsan@ad.com"
解释
git config --global user.name "Your Name":这条命令设置全局的 Git 用户名,所有的 Git 提交都会使用这个名字。
git config --global user.email "email@example.com":这条命令设置全局的 Git 用户电子邮件地址,所有的 Git 提交都会使用这个电子邮件地址。
2. 克隆git仓库。
git clone git@10.17.1.5:/data/git/demo.git