Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)
服务器端:
1.安装 Git
1.1 从yum上安装git
yum –y install git
1.2 验证是否安装成功
git --version
如果显示当前版本号,说明安装成功
2.创建 Git 的专属管理账户和密码
2.1 创建 Git 账户
adduser git
2.2 设置 Git 账户的密码
passwd git
连续两次输入密码后即可
查看 Git 账户是否创建成功
cd /home && ls -al
如果有 git 说明安装成功
3. 创建测试git仓库
- 切换到git账户
su git
- 进入git账号的用户主目录
cd /home/git
- 在用户主目录下创建
test.git
仓库的文件夹mkdir test.git && cd test.git
- 在
test.git
目录下初始化git
仓库git init --bare
-
其中
git init --bare
是在当前目录创建一个裸仓库,也就是说没有工作区的文件,直接把git仓库隐藏的文件放在当前目录下,此目录仅用于存储仓库的历史版本等数据。 -
仓库的路径为:
/home/git/test.git
4.配置账户免密码登录
4.1 创建ssh的默认目录
- 进入 git 账户的主目录
cd /home/git
- 创建
.ssh
的配置,如果此文件夹已经存在请忽略此步mkdir .ssh
4.2 创建校验公钥的配置文件
-
进入
.ssh
目录并创建authorized_keys
文件,此文件存放客户端远程访问的ssh
的公钥cd /home/git/.ssh touch authorized_keys
-
设置权限
chmod 700 /home/git/.ssh/ chmod 600 /home/git/.ssh/authorized_keys
5. 打开 RSA 认证
Centos 7.4 以上版本的系统请跳过
- 切换回
root
用户su root
- 进入
/etc/ssh
目录,编辑sshd_config
cd /etc/ssh vi ssh_config
- 按
i
进入插入模式,打开以下三个配置的注释(带#
为注释), 按ESC
退出插入模式,按:wq
保存RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
- 可以通过
vim
的正则搜索快速定位, 命名模式下:/RSAA
- 可以通过
保存后重启sshd服务
systemctl restart sshd
- CentOS7.4弃用RSAAuthentication支持 : https://ashub.cn/articles/21
- Linux系统下如何配置SSH_Centos7 ssh连接配置 CentOS7下安全配置 : http://www.linuxdown.net/install/config/20...
- CentOS7.4配置SSH登录密码与密钥身份验证踩坑 :https://www.cnblogs.com/Leroscox/p/9627809...
6. 禁止客户端 shell 登录
如果
git
客户端可以直接通过shell
使用git
账户来远程登录服务器,这样是不安全的
- 在
/home/git
下面创建git-shell-commands
目录,并把目录的拥有者设置为git
账户。可以直接用git
账号登录服务器终端操作su git mkdir /home/git/git-shell-commands
- 修改
/etc/passwd
文件su root vim /etc/passwd
可以通过
vim
的正则搜索快速定位到这行:/git:x
找到下图所示内容, 其中 1000
可能是别的数字
将
git:x:1000:1000::/home/git:/bin/bash
改为
git:x:1000:1000::/home/git:/bin/git-shell
可能用到的快捷键:
- 最好不要直接改,可以先复制一行,然后注释掉一行,修改一行,保留原始的
- vim快捷键: 命令模式下:
yy
复制行,p
粘贴0
光标到行首$
到行尾x
删除一个字符i
进入插入模式- 修改完后退出保存:
esc
进入命令模式, 输入::wq!
保存退出。
服务端配置到此全部完成
客户端:
1.与服务端在同一主机下的客户端配置
1.1 安装git
由于是与服务端放在同一主机下,在安装服务端时已经安装
1.2 客户端配置
- 设置用户名和邮箱
git config --global user.name "client_username" git config --global user.email "example@mail.com"
- 查看是否存在ssh keys
cd ~/.ssh
- 创建
ssh keys
ssh-keygen -t rsa -C "example@mail.com"
碰到需要输入的地方直接按回车键,最后创建成功后的结果如下
- 将生成的文件复制到
git
目录下cp /root/.ssh/id_rsa.pub /home/git/.ssh/test.pub
- 将
test.pub
文件中的内容追加到authorized_keys
中cat test.pub >> authorized_keys
1.3 克隆仓库
- 创建本地文件夹
mkdir test_project && cd test_project
- 克隆远程仓库
git clone git@ip地址:/home/git/test.git
这时候,会提示克隆的仓库是空的,现在仓库的确是空的,所以没有报错
ls
查看目录下是否存在 test
文件夹,如果存在,说明克隆成功
2. 远程客户端配置(Windows 10)
2.1 安装 Windows 版 Git 工具
- 双击
Git-2.14.0-64-bit.exe
运行
- 选择安装目录
- 点击
Next
- 点击
Next
- 点击
Next
- 点击
Next
- 点击
Next
8.点击 Next
9.点击 Next
10.点击 Install
等待安装完成
在桌面右键,如果显示
说明安装成功
2.2 客户端配置
- 设置用户名和邮箱
git config --global user.name "client_username" git config --global user.email "example@mail.com"
- 检查是否已经拥有ssh公钥和私钥
进入目录C:\Users\你的用户名
查看是否有.ssh
文件夹,此文件夹下是否有如下两个文件
- 如果没有,那么用
ssh-keygen
创建ssh
的私钥
右键桌面,选择 Git Bash Here
- 创建
ssh keys
ssh-keygen -t rsa -C "example@mail.com"
碰到需要输入的地方直接按回车键,最后创建成功后的结果如下
- 手动将公钥添加到服务器中,先找到
C:\Users\你的用户名.ssh\id_rsa.pub
这个文件所在目录 - 在当前目录打开
Git Bash Here
- 把本地的
id_rsa.pub
文件拷贝到git
服务器scp ./id_rsa.pub root@你的ip地址:/home/git/.ssh/test.pub
由于上面的步骤禁止了 git
客户端 shell
登录,所以这里只能使用 root
账户拷贝文件
- 登录服务器,找找上一步上传的
test.pub
文件,目录为/home/git/.ssh/
9.将test.pub
文件中的内容追加到authorized_keys
中cat test.pub >> authorized_keys
2.3 克隆仓库
- 创建本地文件夹
mkdir test_project && cd test_project
- 克隆远程仓库
git clone git@ip地址:/home/git/test.git
这时候,会提示克隆的仓库是空的,现在仓库的确是空的,所以没有报错
ls
查看目录下是否存在 test
文件夹,如果存在,说明克隆成功
本地提交与服务器端的拉取测试
- 在上一步克隆的
test
文件夹中新建一个文件test.txt
- 在当前目录中打开
Git Bash Here
,git status git add -A; git commit -m'test add' git push origin master
如果出现如上提示,说明本地提交成功
- 切换到服务器端,进入
1.3
步骤中创建的文件夹下(请根据实际情况输入目录)cd /test_project/test git pull
如果出现如上提示,说明更新成功
结语
至此,整个 Git
服务的部署与使用就全部搭建完成,部署过程中使用的命令所代表的功能请自行百度,就不再一一说明了
本作品采用《CC 协议》,转载必须注明作者和本文链接
请问
6. 禁止客户端 shell 登录
里面两步的具体作用是什么?@诺大的院子 如果不禁止
shell
登录,git
用户通过ssh
连接服务器,登录到服务器上,可以对服务器进行各种操作,这样是不安全的,git
这个账户我们只需要能对git
仓库做操作就可以了,不需要更大的权限写的很详细,win下cmder很好用
@生活无限好 总体还是很不错的哈
如何从服务器拉取文件到windows本地呢?这个没看明白