一.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