Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

服务器端:

1.安装 Git

1.1 从yum上安装git

yum –y install git

1.2 验证是否安装成功

git --version

如果显示当前版本号,说明安装成功

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

2.创建 Git 的专属管理账户和密码

2.1 创建 Git 账户

adduser git

2.2 设置 Git 账户的密码

passwd git

连续两次输入密码后即可

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

查看 Git 账户是否创建成功

cd /home && ls -al

如果有 git 说明安装成功

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

3. 创建测试git仓库

  1. 切换到git账户
    su git
  2. 进入git账号的用户主目录
    cd /home/git
  3. 在用户主目录下创建 test.git 仓库的文件夹
    mkdir test.git  && cd test.git
  4. test.git 目录下初始化 git 仓库
    git init --bare
  • 其中 git init --bare 是在当前目录创建一个裸仓库,也就是说没有工作区的文件,直接把git仓库隐藏的文件放在当前目录下,此目录仅用于存储仓库的历史版本等数据。

  • 仓库的路径为:/home/git/test.git

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

4.配置账户免密码登录

4.1 创建ssh的默认目录

  1. 进入 git 账户的主目录
    cd /home/git
  2. 创建 .ssh的配置,如果此文件夹已经存在请忽略此步
    mkdir .ssh

4.2 创建校验公钥的配置文件

  1. 进入 .ssh 目录并创建 authorized_keys 文件,此文件存放客户端远程访问的 ssh 的公钥

    cd /home/git/.ssh
    touch authorized_keys
  2. 设置权限

    chmod 700 /home/git/.ssh/
    chmod 600 /home/git/.ssh/authorized_keys

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

5. 打开 RSA 认证

Centos 7.4 以上版本的系统请跳过

  1. 切换回 root 用户
    su root

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 进入 /etc/ssh 目录,编辑 sshd_config
    cd  /etc/ssh
    vi ssh_config

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. i 进入插入模式,打开以下三个配置的注释(带 # 为注释), 按 ESC 退出插入模式,按 :wq 保存
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    1. 可以通过 vim 的正则搜索快速定位, 命名模式下 :/RSAA

保存后重启sshd服务

systemctl restart sshd

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. CentOS7.4弃用RSAAuthentication支持 : https://ashub.cn/articles/21
  2. Linux系统下如何配置SSH_Centos7 ssh连接配置 CentOS7下安全配置 : http://www.linuxdown.net/install/config/20...
  3. CentOS7.4配置SSH登录密码与密钥身份验证踩坑 :https://www.cnblogs.com/Leroscox/p/9627809...

6. 禁止客户端 shell 登录

如果 git 客户端可以直接通过 shell 使用 git 账户来远程登录服务器,这样是不安全的

  1. /home/git 下面创建 git-shell-commands 目录,并把目录的拥有者设置为 git 账户。可以直接用 git 账号登录服务器终端操作
    su git
    mkdir /home/git/git-shell-commands
  2. 修改 /etc/passwd文件
    su root
    vim /etc/passwd

    可以通过 vim 的正则搜索快速定位到这行 :/git:x

找到下图所示内容, 其中 1000 可能是别的数字

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

git:x:1000:1000::/home/git:/bin/bash 

改为

git:x:1000:1000::/home/git:/bin/git-shell 

可能用到的快捷键:

  1. 最好不要直接改,可以先复制一行,然后注释掉一行,修改一行,保留原始的
  2. vim快捷键: 命令模式下:yy 复制行,p 粘贴 0 光标到行首 $ 到行尾 x 删除一个字符 i进入插入模式
  3. 修改完后退出保存: esc 进入命令模式, 输入::wq! 保存退出。

服务端配置到此全部完成

客户端:

1.与服务端在同一主机下的客户端配置

1.1 安装git

由于是与服务端放在同一主机下,在安装服务端时已经安装

1.2 客户端配置

  1. 设置用户名和邮箱
    git config --global user.name "client_username"
    git config --global user.email "example@mail.com"
  2. 查看是否存在ssh keys
    cd ~/.ssh

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 创建 ssh keys
    ssh-keygen -t rsa -C "example@mail.com"

    碰到需要输入的地方直接按回车键,最后创建成功后的结果如下

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 将生成的文件复制到 git 目录下
    cp /root/.ssh/id_rsa.pub /home/git/.ssh/test.pub
  2. test.pub 文件中的内容追加到 authorized_keys
    cat test.pub >> authorized_keys

1.3 克隆仓库

  1. 创建本地文件夹
    mkdir test_project && cd test_project
  2. 克隆远程仓库
    git clone git@ip地址:/home/git/test.git

    这时候,会提示克隆的仓库是空的,现在仓库的确是空的,所以没有报错

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

ls 查看目录下是否存在 test 文件夹,如果存在,说明克隆成功

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

2. 远程客户端配置(Windows 10)

2.1 安装 Windows 版 Git 工具

  1. 双击 Git-2.14.0-64-bit.exe 运行

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 选择安装目录

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 点击 Next

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 点击 Next

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 点击 Next

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 点击 Next

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 点击 Next

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

8.点击 Next

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

9.点击 Next

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

10.点击 Install

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

等待安装完成

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

在桌面右键,如果显示

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

说明安装成功

2.2 客户端配置

  1. 设置用户名和邮箱
    git config --global user.name "client_username"
    git config --global user.email "example@mail.com"
  2. 检查是否已经拥有ssh公钥和私钥
    进入目录 C:\Users\你的用户名 查看是否有 .ssh 文件夹,此文件夹下是否有如下两个文件

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

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

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

右键桌面,选择 Git Bash Here

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 创建 ssh keys
    ssh-keygen -t rsa -C "example@mail.com"

    碰到需要输入的地方直接按回车键,最后创建成功后的结果如下

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 手动将公钥添加到服务器中,先找到 C:\Users\你的用户名.ssh\id_rsa.pub 这个文件所在目录
  2. 在当前目录打开 Git Bash Here

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 把本地的 id_rsa.pub 文件拷贝到 git 服务器
    scp ./id_rsa.pub root@你的ip地址:/home/git/.ssh/test.pub

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

由于上面的步骤禁止了 git客户端 shell 登录,所以这里只能使用 root 账户拷贝文件

  1. 登录服务器,找找上一步上传的 test.pub 文件,目录为 /home/git/.ssh/
    9.将 test.pub 文件中的内容追加到 authorized_keys
    cat test.pub >> authorized_keys

    2.3 克隆仓库

  2. 创建本地文件夹
    mkdir test_project && cd test_project
  3. 克隆远程仓库
    git clone git@ip地址:/home/git/test.git

    这时候,会提示克隆的仓库是空的,现在仓库的确是空的,所以没有报错

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

ls 查看目录下是否存在 test 文件夹,如果存在,说明克隆成功

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

本地提交与服务器端的拉取测试

  1. 在上一步克隆的 test 文件夹中新建一个文件 test.txt

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

  1. 在当前目录中打开 Git Bash Here
    git status
    git add -A;
    git commit -m'test add'
    git push origin master

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

如果出现如上提示,说明本地提交成功

  1. 切换到服务器端,进入 1.3 步骤中创建的文件夹下(请根据实际情况输入目录)
    cd /test_project/test
    git pull

Linux 环境下 Git 服务器的搭建与基本使用(CentOS 7 版本)

如果出现如上提示,说明更新成功

结语

至此,整个 Git 服务的部署与使用就全部搭建完成,部署过程中使用的命令所代表的功能请自行百度,就不再一一说明了

本作品采用《CC 协议》,转载必须注明作者和本文链接
www.haowuliaoa.com
讨论数量: 7

请问6. 禁止客户端 shell 登录里面两步的具体作用是什么?

5年前 评论

@诺大的院子 如果不禁止 shell 登录,git 用户通过 ssh 连接服务器,登录到服务器上,可以对服务器进行各种操作,这样是不安全的, git 这个账户我们只需要能对 git 仓库做操作就可以了,不需要更大的权限

5年前 评论

写的很详细,win下cmder很好用

5年前 评论
22 (楼主) 5年前
taozywu

@生活无限好 总体还是很不错的哈

5年前 评论

如何从服务器拉取文件到windows本地呢?这个没看明白

3年前 评论
22 (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!