linux部署Git服务器

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件

下面就我部署git的实践,操作环境未centos6.8,客户机是win10,因为是部署我尽量简单化部署,但是步骤不会漏掉

首先yum安装git

yum install git
git --version #查看git版本
git version 1.7.1

然后我们需要创建git专用的账户和密码,注意我们创建用户在哪个目录下创建就就在/etc/passwd里面用户名定位到哪个目录

useradd git
passwd git #设置git密码

接着创建git服务端仓库

mkdir -p /data/git/gittest.git
git init --bare /data/git/gittest.git
cd /data/git/
chown -R git:git gittest.git/

客户端远程克隆仓库(cmder操作)

d:
mkdir githome
#然后从linux git服务器上克隆项目
git clone git@192.168.10.10:/home/data/gittest.git

上述操作会让你输入git设置的密码,然后会在本地的githome目录下gittest仓库,目录下还有个.git文件

接着我们需要在客户机创建ssh公钥和私钥

ssh-keygen -t rsa -C "117237008@qq.com"

执行后提示一路回车,查看如下图片就是成功了

{53520E50-16FB-4D35-812E-AA6C89A7E63A}_20190509210229.jpg

然后C:\Users\yang.su\.ssh会多两个文件,id_rsa和id_rsa.pub

known_hosts文件是刚才克隆原车给仓库的时候生成的

服务器端打开rsa认证,在sshd_config文件内打开以下三个配置

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

然后重启sshd服务

/etc/rc.d/init.d/sshd restart

由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /data/git/.ssh/authorized_keys

在 /data/git/ 下创建目录 .ssh

cd /data/git
mkdir .ssh

然后把 .ssh 文件夹的所属用户和组修改为 git

chown -R git:git .ssh

将客户端的公钥上传到服务器目录/data/git/.ssh/下并改名authorized_keys

scp C:\Users\yang.su\.ssh\id_rsa.pub git@192.168.10.10:/data/git/.ssh/authorized_keys

修改 .ssh 目录的权限为 700

修改 .ssh/authorized_keys 文件的权限为 600

chmod -R 700 .ssh/
cd .ssh
chmod 600 authorized_keys

客户端再次克隆仓库

git clone git@192.168.10.10:/data/git/gittest.git
Cloning into 'gittest'...
warning: You appear to have cloned an empty repository.

然后再本地githome目录下存在了gittest目录,说明项目已经被克隆了


禁止 git 用户 ssh 登录服务器

之前在服务器端创建的 git 用户不允许 ssh 登录服务器,修改/etc/passwd文件

git:x:502:504::/home/git:/bin/bash
#修改为
git:x:502:504::/home/git:/bin/git-shell

此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统



内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/411.html

评论

  1. song

    song 回复

    2017-08-22 13:23:43

    照着下面的函数重新生成一下key值,这句话怎么做,本人小白,完全不懂在哪生成key值

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。