Linux(Centos7)安装Git服务器,多用户管理,设置ssh免密连接

  • 一.安装git服务器前置准备
  • 二.安装git服务器
  • 三.创建组、用户并给用户设置密码
  • 四.ssh证书登录
  • 五.git修改远程仓库地址


一.安装git服务器前置准备

1.切换用户:

su - root

2. 查看已安装的git版本:

git --version

3.查看 yum 源仓库的 Git 信息:

yum info git

centos7下载ssh centos7安装ssh服务yum_git

4.需要升级或重装git服务(Git服务版本过低,特别是: git version 2.* 以下的)
4.1 直接升级版本(升级完成后 git --version 查看是否升级版本成功,很可能无效,只能卸载后重装4.2)

yum -y upgrade git

4.2 卸载已安装的git服务

yum remove git

4.3 修改yum配置文件

vim /etc/yum.repos.d/wandisco-git.repo

按"i"键开启编辑,把内容直接替换成:

[wandisco-git]
name=Wandisco GIT Repository
baseurl=http://opensource.wandisco.com/centos/7/git/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://opensource.wandisco.com/RPM-GPG-KEY-WANdisco

后按 "Esc"键 退出编辑 , 后输入 “:wq” 保存编辑操作退出

二.安装git服务器

1.安装git服务当前环境配置:

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

2.安装git服务:

yum install git

三.创建组、用户并给用户设置密码

1.创建一个git用户组

groupadd git

2.创建一个git用户并添加到git用户组

useradd git -g git

3.设置密码

passwd git

输入你的密码

4.新建git的仓库,并设置权限,用户组为git (如果你的git仓库所在目录不一样,改成对应的目录)
chgrp [-R] 所属组 文件
chown [-R] 所有者:所属组 文件或目录
-R(注意是大写): 递归修改,对当前目录文件和子目录当中文件一并修改。
chmod 用于改变文件或目录权限 详情

cd /home
chown -R git:git git
cd /home/git/
mkdir warehouse
chown -R git:git warehouse
chmod 755 warehouse

# 创建一个裸仓库(空仓库)
git init --bare 项目名.git
chown -R git:git /home/git/warehouse/项目名.git
chmod 775 /home/git/warehouse/项目名.git
#以后每创建一个新的仓库.都需要执行上面的命令(修改仓库所属用户为git)

5.禁用git用户的shell登录,防止用户通过Git用户登录服务器
编辑 /etc/passwd 文件,将文件后边的bash改成git-shell

vim /etc/passwd

将("1001"是一个变量,找到 "git: “,修改最后”:"后边的bash改成git-shell)

git:x:1001:1001::/home/git:/bin/bash

改成

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

后按 "Esc"键 退出编辑 , 后输入 “:wq” 保存编辑操作退出。

四.ssh证书登录

服务端创建RSA #进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

#保存并重启 sshd 服务:

systemctl restart sshd.service

1.在你的客户端机器上,生成ssh证书,如果实在windows下,可以在git bash中执行.

ssh-keygen -t rsa -C "你的邮箱地址" -f ~/.ssh/git_id_{{youName}}

2.将git_id_youName.pub传到 git服务器,ssh文件夹要被置为700权限,authorized_keys要被置为 600权限( 注意是>>,不是>,>会覆盖旧的数据)

cd /home/git/.ssh/
cat git_id_youName.pub >> authorized_keys
chmod 700 /home/git/.ssh/
chmod 600 /home/git/.ssh/authorized_keys

如果用>>符号,即表进追加内容,不会覆盖原文件内容,只会在原文件内容下面追加你所输入的内容。>和>>千万别搞混了,用错可能会出大问题的

3.在客户端机器上.新建文件夹,在git bash中执行

git clone git@git服务器ip:/home/git/warehouse/项目名.git

4.客户端配置多个git账户修改.ssh下文件的:config(不存在就创建,该文件没有后缀)

# 配置文件参数
# Host 一个自定义名称,比如叫做aliyun,那么clone仓库的时候,就要用git clone git@aliyun:/home/git/fallshum.git
# HostName 实际要连接的主机地址
# PreferredAuthentications 配置登录时用什么权限认证–可设为publickey,password publickey,keyboard-interactive等
# IdentityFile 指明要使用的identityFile路径,也就是私钥的地址
# User 用户名 服务器的用户名

# git ssh 配置
Host git_{{youName}} #本地访问网址(HostName别称):git clone git@git_{{youName}}:/home/git/项目名.git
HostName 连接的主机地址 #git服务器ip或域名
Port 22
PreferredAuthentications publickey
IdentityFile ~/.ssh/git_id_{{youName}} #生成的秘钥文件
User git

5.客户端:查看主机是否与github网站之间的ssh通信是否连接成功 :ssh -T git@git_{{youName}}

ssh -T git@git_{{youName}}

五.git修改远程仓库地址

在原有git项目文件夹 ,在git bash中

先删原有的远程仓库地址 git remote rm origin
设置链接远程仓库 git remote add origin git@Host:home/git/warehouse/项目名.git

git remote rm origin
git remote add origin git@git_{{youName}}:home/git/warehouse/项目名.git