Linux基于SSH协议搭建Git仓库

版权声明:原创文章,转载请注明出处! https://blog.csdn.net/L_15156024189/article/details/86663691

环境

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 [email protected]

如果开发者已经在本系统中创建了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系统开发者就可以克隆仓库项目并拉取和推送数据了。

猜你喜欢

转载自blog.csdn.net/L_15156024189/article/details/86663691