环境
Linux系统:版本rhel-server-7.4-x86_64;
Git服务器规划:
IP地址 | 角色 | 系统 |
192.168.128.111 | Git服务器(共享仓库) | Linux |
192.168.128.112 | 开发者mike | Linux |
192.168.128.1 | 开发者leboop | Windows |
如图:
SSH密钥对生成
Windows系统
打开Git Bash命令窗口,执行ssh-keygen命令生成密钥对,如图:
生成过程中提示设置密钥对的保存路径和密码等信息。如果密钥对已经生成过,会提示是否要重写。默认保存在Windows系统的当前用户下的.ssh目录下,如图:
id_rsa是密钥存储文件,密钥内容如下:
id_rsa.pub存储公钥,内容以ssh-rsa开头,中间一串字符串,最后是用户名和主机信息,如下:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5YHNHadjylNb+cneTVDL+S6rOrzy9Tcq/rWhQCdu7vNUgTF9PWuQvZcemf8vwkVzt9LUKMgYgPhj3CWfg0ng4DGymc49/SV4b/UJNVxfBkp280aaSS/+5vbVUhIGG+MFgwll2H88mYzBbC0q1vQfsXPT2Blc3UyWY/n4fB+bKv5HOt7pjvTcndKOkzF1and+5C8fCHcliBf5n88Rk24kaYWrIv66O61dBQGM0Ihu8CnqZQfhEhGUBFwxg7ssq7Y6QgDfPkCPJPfF5+sDhg8bdkJb7bokgEmcBm2YdoUExfrvV6drNlaweg3AYlBknXmvZ5gOXKKQWrk0LE1TRI589 user@leboop
Linux系统
Linux系统生成密钥对的方式与Windows相同,下面模拟某个用户创建密钥对。先创建一个mike用户,并切换到该用户下生成密钥对,如图:
默认保存在/home/mike/.ssh目录下,如图:
配置Git服务器
SSH登录配置
将Windows系统和Linux系统生成的公钥(id_rsa.pub文件中的内容)拷贝到Git服务器上,一个基于SSH协议的多开发者协作的Git服务器就搭建好了。具体做法如下:
(1)首先执行
adduser git
在Git服务器上创建一个专门管理Git仓库的git用户;
(2)然后切换到git用户下,创建authorized_keys文件,用于存放所有开发者的SSH公钥,命令和文件权限设置如下:
su git
cd
mkdir .ssh && chmod 700 .ssh
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
(3)将之前Windows和Linux系统生成的公钥通过邮件或者其他方式发送给Git服务器管理者,Git服务器管理者负责将公钥拷贝到authorized_keys文件中,如图:
如果觉得发邮件都嫌麻烦,开发者可以直接执行远程拷贝命令将自己的公钥拷贝过去,不过需要登录密码,如下:
ssh-copy-id -i 具体路径/id_rsa.pub git@192.168.128.111
如果开发者已经在本系统中创建了IP地址192.168.128.111和主机名bigdata111之间的对应关系,上面命令也可以如下:
ssh-copy-id -i 具体路径/id_rsa.pub git@bigdata111
当这一切都准备好后,可以如下测试SSH公钥是否已经配置成功了,如图:
仓库搭建
先在Linux上创建专门用于管理Git仓库项目的目录/srv/git/,然后在该目录下创建project.git目录,进入project.git目录下执行git init --bare创初始化一个裸仓库,如图:
所谓裸仓库,就是一个不含工作目录的仓库,注意裸仓库只是不包含工作目录,并不是没有子目录。事实上,这里的project.git就相当于有工作目录的.git目录,后面我们会看到project.git目录被远程克隆后,生成的是一个project的目录,而目录下就包含.git目录,原project.git目录下的所有子目录和文件都将放入.git目录中。因为开发者不仅需要对仓库有读权限,还需要写权限,所以这里,需要给project.git赋予写权限,如下:
chown -R git:git project.git
到这里一个简易的Git仓库就搭建完毕了,接下来Windows和Linux系统开发者就可以克隆仓库项目并拉取和推送数据了。