git 服务器搭建
1、安装git
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ yum install git
创建用户组 和用户
$ groupadd git
$ useradd git -g git
创建证书登录
收集所有需要登录的用户的公钥,公钥位于id_rsa.pub 文件中
把我们的公钥导入到/home/git/.ssh/authorzed_keys文件里,一行一个。
如果没有创建:
$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys
初始化Git仓库
首先我们选定一个目录作为Git仓库,假定是/home/gitrepo/runoob.git,在/home/gitrepo目录下输入命令:
$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo
$ git init --bare runoob.git
Initialized empty Git repository in /home/gitrepo/runoob.git/
以上命令Git创建一个空仓库,服务器上的Git仓库通常都以.git结尾。然后,把仓库所属用户改为git:
$ chown -R git:git runoob.git
克隆仓库
$ git clone [email protected]:/home/gitrepo/runoob.git
Cloning into 'runoob'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
=======
git --version 查看Git版本
id git 查看用户是否存在
useradd git 添加git用户
echo '123' | passwd --stdin git 给git 用户设置密码
su - git 切换用户git
ssh-keygen -t rsa 生成rsa 证书文件
------
客户端创建rsa公钥和私钥
ssh-keygen -t rsa -C '[email protected]'
此时 C:\Users\用户名\.ssh 下会多出两个 id_rsa(私钥)和 id_rsa.pub(公钥) 文件
服务器端git 打开rsa认证
1、修改sshd_config文件配置
RSAAuthentication ys
PubkeyAuthentication yes
AuthorizedkeysFile .ssh/authorized_keys (是公钥的存放路径)
2、重启sshd服务
service sshd restart
sshd的相关操作命令:
systemctl status sshd.service #查看ssh服务状态
systemctl start sshd.service #开启ssh服务
systemctl enable sshd.service #设置ssh服务开机自启
3、在客户端Git Bash 下导入文件
将客户端公钥导入服务器端 .ssh/authorized_keys 文件中,执行:
ssh git@服务器IP 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
4、设置权限
1、在设置权限之前先确认一下 .ssh目录和文件authorized_keys的权限,如果.ssh目录权限是:700 文件authorized_keys权限是:600,则不需要设置权限。
2、如果不是700 和 600,则执行命令:
chmod 700 /home/git/.ssh/
chmod 600 /home/git/.ssh/authorized_keys
客户段再次clone (测试是否需要输入密码)
================================
git init 和 git init --bare 的区别
git init 创建的工作仓库(working repository)适合于实际编辑生产过程中,在工作目录下,你将可以进行实际的编码、文件管理操作和保存项目在本地工作。如果你开始创建一个项目将包含有源代码和版本跟踪记录的时候你可以使用”git init”,如果你克隆”git clone”一个已经存在的版本库的时候,你也可以得到一个working repository,它也将包含”.git”目录和源文件的拷贝。(也就是说,在远程仓库上,代码是否需要编辑和执行,如果需要执行,就使用git init)
git init --bare创建的裸仓库(bare repository)主要是用作分享版本库。开发者使用bare repository可以向其他人分享存储在本地的版本库,以便于实时分享代码更新和团队协作 。通过使用”git push”命令,你可以将你的本地更新提交至“中心版本库”(其他开发者可访问的中心库)。其他开发者可以使用“git pull”命令接受你提交的版本更新。如果你正在一个多人协作的项目团队或者同一个项目需要在不同电脑上面完成的时候,bare repository可以满足你的分布式开发需求。(也就是说,大家都把内容分享到中心仓库,然后每个人都可以获取其他人的修改信息的过程,但中心仓库没有代码文件)
————————————————