一.Git服务端安装

1.安装依赖包
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel

2.下载最新版源码包https://www.kernel.org/pub/software/scm/git/

3.解压源码包,并进入解压目录
  tar -zxvf git-2.16.1.tar.gz
  cd git-2.16.1
4.指定安装目录为/usr/local/git-2.16.1 并执行安装命令
./configure --prefix=/usr/local/git-2.16.1
make
make install
5.设置全局环境变量,修改/etc/profile 并使修改生效
export PATH=$PATH://usr/local/git-2.16.1bin
6.修改完成之后,执行命令,生效配置文件
source /etc/profile
7.安装完后,查看 Git 版本
  git --version


查看安装的git版本,校验通过,安装成功。


二.客户端安装

下载 Git for Windows,地址:https://git-for-windows.github.io/ 安装完之后,可以使用 Git Bash 作为命令行客户端。
安装完之后,查看 Git 版本

三.服务器端创建 git 用户,用来管理 Git 服务

[root@localhost home]# id gitid: git:无此用户
[root@localhost home]# useradd git
[root@localhost home]# passwd ****
四.服务器端创建 Git 仓库
 
设置 /home/data/git/hczz.git 为 Git 仓库
 然后把 Git 仓库的 owner 修改为 git[root@localhost home]# mkdir -p data/git/hczz.git
 [root@localhost home]# git init --bare data/git/gittest.gitInitialized empty Git repository in /home/data/git/hczz.git/
 [root@localhost home]# cd data/git/[root@localhost git]# chown -R git:git hczz.git

五.客户端 clone 远程仓库

进入 Git Bash 命令行客户端,
创建项目地址(设置在 d:/ruby_project/hczz)
并进入:

cd ruby_project/hczz
 mkdir hczz_git
 cd hczz_git然后从 Linux Git 服务器上 clone 项目:
$ git clone git@95.32.7.101:/home/data/hczz.git
当第一次连接到目标 Git 服务器时会得到一个提示:
The authenticity of host '95.32.7.101 (95.32.7.101)' can't be established.RSA key fingerprint is 
 SHA256:Ve6WV/SCA059EqoUOzbFoZdfmMh3B259nigfmvdadqQ.Are you sure you want to continue connecting (yes/no)?选择 yes:
Warning: Permanently added '95.32.7.101' (RSA) to the list of known hosts.

此时 C:\Users\用户名.ssh 下会多出一个文件 known_hosts,
以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。

后面提示要输入密码,可以采用 SSH 公钥来进行验证。

六.客户端创建 SSH 公钥和私钥
$ ssh-keygen -t rsa -C "1889313114*@qq.com"

 

此时 C:\Users\用户名.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub
id_rsa 是私钥
id_rsa.pub 是公钥

七. 服务器端 Git 打开 RSA 认证

进入 /etc/ssh 目录,编辑 sshd_config,
打开以下三个配置的注释:

RSAAuthentication yes
 PubkeyAuthentication yes
 AuthorizedKeysFile .ssh/authorized_keys 保存并重启 sshd 服务:
[root@localhost ssh]# /etc/rc.d/init.d/sshd restart
 由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,
 实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,
 所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys
 在 /home/git/ 下创建目录 .ssh[root@localhost git]# pwd/home/git
 [root@localhost git]# mkdir .ssh
 [root@localhost git]# ls -a. 
 .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla .ssh 然后把 .ssh 文件夹的 owner 修改为 git
 [root@localhost git]# chown -R git:git .ssh
[root@localhost git]# ll -a
总用量 32
 drwx------.
 5 git git 4096 8月 28 20:04 .
 drwxr-xr-x. 
 8 root root 4096 8月 28 19:32 ..
 -rw-r--r--.
 1 git git 18 10月 2 2018 .bash_logout
 -rw-r--r--. 
 1 git git176 10月 2 2018 .bash_profile
 -rw-r--r--. 
 1 git git 124 10月 16 2014 .bashrc
 drwxr-xr-x. 
 2 git git 4096 11月 2 2018 .gnome2
 drwxr-xr-x.
 4 git git 4096 5月 8 12:22 .mozilla
 drwxr-xr-x. 
 2 git git 4096 8月 28 20:08 .ssh

八.将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 
文件
回到 Git Bash 下,
导入文件:
$ ssh git@95.32.7.101 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub

需要输入服务器端 git 用户的密码

回到服务器端,查看 .ssh 下是否存在 authorized_keys 文件:

[root@localhost git]# cd .ssh
 [root@localhost .ssh]# 
 ll总用量 4-rw-rw-r--. 
 1 git git 398 8月 28 20:08 authorized_keys

可以查看一下是否是客户端生成的公钥。

重要:

修改 .ssh 目录的权限为 700

修改 .ssh/authorized_keys 文件的权限为 600
[root@localhost git]# chmod 700 .ssh
[root@localhost git]# cd .ssh
[root@localhost .ssh]# chmod 600 authorized_keys

九.客户端再次 clone 远程仓库

$ git clone git@95.32.7.101:/home/data/git/hczz.git