1、在linux上搭建Git服务

环境

  • 操作系统 CentOS 7.2 64位
  • CPU 1核
  • 内存 1GB

安装Git

yum install -y git

查看安装版本

git –version

创建Git用户,并为Git用户设置密码

useradd git
passwd git (12345678)

创建Git仓库

mkdir -p /usr/repo/git/test1.git
git init –bare /usr/repo/git/test1.git
cd /usr/repo/git/
chown -R git:git test1.git

客户端clone远程仓库

git clone git@118.89.63.66:/usr/repo/git/test1.git

客户端创建SSH公钥和私钥

客户端第一次clone会要求输入密码,此时可用SHH创建公钥、私钥。
在window客户端,git bash中执行以下命令:

ssh-keygen -t rsa -C “1052045476@qq.com”

服务器端Git打开RSA认证

进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

保存并重启 sshd 服务:

service sshd restart

打开RSA认证

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

cd /home/git
mkdir .ssh
chown -R git:git .ssh

将客户端公钥导入服务端 /home/git/.ssh/authorized_keys文件

ssh git@118.89.63.66 ‘cat >> .ssh/authorized_keys’ < ~/.ssh/id_rsa.pub

此处输入git密码,(12345678)

回到服务器端,查看 .ssh 下是否存在 authorized_keys 文件:

修改.ssh目录权限

chmod 700 .ssh
cd .ssh
chmod 600 authorized_keys

客户端clone仓库

git clone git@118.89.63.66:/usr/repo/git/test1.git

禁止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 登录系统。

你的鼓励,是我前进的动力!