欢迎移步博主CSDN:CSDN博客

1. 系统环境

系统: Linux:CentOS 7.2 64位

2. 安装git

# 请确保您切换到了root账户
su root
yum install -y git
# 验证是否安装成功
git --version

3. 添加git的管理的账户和设置密码

# 添加git账户
adduser git

# 修改git的密码
passwd git

4. git的权限管理

git仓库的权限管理,我们这里采用手动进行管理和配置,可自行选择自动工具gitolite管理

5. git的手动权限管理

5.1 配置服务端的ssh访问

切换到git账号,并创建ssh的默认目录和校验公钥的配置文件

# 1.切换到git账号
su git
# 2.进入 git账户的主目录
cd /home/git

# 3.创建.ssh的配置,如果此文件夹已经存在请忽略此步。
mkdir .ssh

# 4. 进入刚创建的.ssh目录并创建authorized_keys文件,此文件存放客户端远程访问的 ssh的公钥。
cd /home/git/.ssh
touch authorized_keys

# 5. 设置权限,此步骤不能省略,而且权限值也不要改,不然会报错。
chmod 700 /home/git/.ssh/
chmod 600 /home/git/.ssh/authorized_keys
此时,服务端的配置基本完成。接下需要把客户端的公钥拷贝到authorized_keys文件中。

5.2 配置客户端的ssh私钥并上传服务器

以下是客户端创建ssh私钥和拷贝的过程,如果您有私钥越过创建私钥的过程。

请用您的客户端进入终端(如果只有一台电脑,可以用不同的账号模拟不同客户端)

第一步: 创建客户端的ssh私钥和公钥

检查是否已经拥有ssh公钥和私钥:进入用户的主目录。

用户主目录:
Windows系统:C:\Users\用户名
Linux系统:/home/用户名
Mac系统:/Users/用户名

然后查看是否有.ssh文件夹,此文件夹下是否有如下几个文件。

用户主目录的.ssh文件夹下

.ssh
├── id_rsa
└── id_rsa.pub  # 我们要用的私钥

如果没有,那么用ssh-keygen创建ssh的私钥。

ssh-keygen -t rsa

接下来,三个回车默认即可。

创建私钥成功后,在查看用户目录是否有意加有了公钥文件id_rsa.pub

第二步: 拷贝私钥到git的服务器

如何把客户端的文件拷贝到服务器端,我建议用scp命令进行拷贝。

以下以windows系统为例:

# 首先进入我的用户主目录的.ssh目录下,注意用户名xxx替换成自己的
$ cd C:\Users\用户名/.ssh

# 以下命令是:把本地的id_rsa.pub文件拷贝到 aicoder.com服务器,登录aicoder.com服务的账号是git。
# 冒号后面默认就是git账号的主目录,最后文件被保存成laoma.pub
# 注意:把域名换成你自己的或者ip,最后的文件名可以自己定,后面还有用。
scp ./id_rsa.pub git@yourIP.com:.ssh/laoma.pub

5.3 服务器端添加客户端的SSH公钥

切换到服务器端,把刚才上传的laoma.pub文件的内容添加到 authorized_keys中,就可以允许客户端ssh访问了。

# 切换到git账户
su git
cd /home/git/.ssh

ls -al
# 查看一下.ssh目录是否有authorized_keys和laoma.pub文件
# .
# |-- authorized_keys
# `-- laoma.pub

# 如果有,那么进行下面的把laoma.pub文件中的内容添加到authorized_keys中.
cat laoma.pub >> authorized_keys

# >> 是在文件后面追加的意思,主要如果用其他编辑器,每个ssh的pub要单独一行,建议用cat命令方便简单。

到此为止,您配置的客户端应该可以ssh的方式直接用git账号登录服务器。(当然不安全,后面可以控制)

# 在客户端用ssh测试连接远程服务器,请将域名yourIP.com 换成你的ip地址或者域名
$ ssh git@yourIP.com    

第一次连接有警告,输入yes继续即可。如果可以连接上,那么恭喜你的ssh配置已经可以了。

5.4 服务器端创建测试git仓库

进入服务器的终端。


# 切换到git账号
$ su git
# 进入git账号的用户主目录。

$ cd /home/git
# 在用户主目录下创建 test.git仓库的文件夹

$ mkdir myCode && cd myCode
# 在myCode 目录下初始化git仓库

$ git init --bare
# 输出如下内容,表示成功
Initialized empty Git repository in /home/git/myCode/

#第一次创建仓库后请执行以下代码
#这是由于git默认拒绝了push操作,需要进行设置

#方法一:需要配置一下git的接收配置,执行如下命令即可正确提交(在服务器上,而不是git bash中):
git config receive.denyCurrentBranch ignore

git init --bare 是在当前目录创建一个裸仓库,也就是说没有工作区的文件,直接把git仓库隐藏的文件放在当前目录下,此目录仅用于存储仓库的历史版本等数据。

此时,客户端就可以进行clone或者remote add此仓库了。

5.5 客户端测试连接git远程仓库

客户端,可以新建一个文件夹,初始化一个仓库,然后跟远程服务器上的空仓库建立连接。

# 以下shell代码,纯手写没有验证,如果有错误请自行纠正。
mkdir code && cd code
git init
touch test.txt
echo 'test' >> test.txt

git add .
git commit -m 'the first commit'

# 把当前仓库跟远程仓库添映射
git remote add origin git@yourIP.com:myCode

# 把当前仓库push到远程仓库。
$ git push -u origin master

到此为止,我们就可以尽情的享用git私服了

5.6 TortoiseGit 实现SSH协议推送拉取远程git服务器代码

5.6.1 安装TortoiseGit

首先自行安装好TortoiseGit客户端

5.6.2 打开小乌龟自带的PuTTYgen

在之前使用Git命令操作的时候,已经生成了ssh key,在路径 ~/.ssh/下,打开小乌龟自带的PuTTYgen。
在这里插入图片描述

5.6.2 加载已经生成的私钥

然后加载已经生成的私钥,点Load按钮,选择私钥。如果你看不到你的的id_rsa,右下角类型选择All Files就可以了
在这里插入图片描述
在这里插入图片描述

若没有.ppk文件请按一下方式生成
在这里插入图片描述

5.6.3 保存Save private key

然后点击Save private key,选择保存路径进行保存。

在这里插入图片描述

5.6.4 配置TortoiseGit

然后打开小乌龟的设置,在Git下有一个远端,然后点你的远端名字,然后你会看到有一个Putty密钥,选择你刚才生成的后缀为ppk的那个私钥,然后点应用,点确定

在这里插入图片描述

5.6.4.1 TortoiseGit远程端口设置

打码部分为你的服务器地址
url格式 ssh://用户名@ip:端口/~/文件夹地址 (~代表当前用户目录)
在这里插入图片描述

最后修改:2020 年 03 月 14 日 12 : 39 PM
如果觉得我的文章对你有用,请随意赞赏