安装git

sudo apt update
sudo apt install git

创建git用户

sudo adduser git

创建证书登录

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
或者在需要登录的客户端 执行以下命令
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
ssh-copy-id git@your_server_ip
这里的作用也是将公钥匙复制到/home/git/.ssh/authorized_keys文件

创建仓库

  • 下面例子为创建blog仓库
cd /home/git;sudo git init --bare blog.git;sudo chown -R git:git blog.git

禁用git用户ssh登录 可选

  • 出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行

    • git:x:1001:1001:,,,:/home/git:/bin/bash
      
  • 将其改为

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

修改ssh配置 只允许使用公钥登录 建议

  • sudo vi /etc/ssh/sshd_config 确保以下配置项处于启用状态 2个配置按照顺序逐个修改,确保能用公钥登录后再禁用密码登录

    • PubkeyAuthentication yes
      PasswordAuthentication no
      
    • PubkeyAuthentication为是否允许pubkey登录 PasswordAuthentication为是否允许使用密码登录

  • sudo systemctl restart ssh 重启ssh服务

客户端测试git拉取提交是否成功

git clone git@xx.com:/home/git/blog.git

定期备份git项目源码

Backup.sh

  • 将xxx.git项目打包 用网盘工具备份 每天定时备份一次
rm -rf /tmp/gitbackup/blog.git.tgz
rm -rf /tmp/gitbackup/golang.git.tgz
rm -rf /tmp/gitbackup/becool.git.tgz
sudo tar -czvf /tmp/gitbackup/blog.git.tgz /home/git/blog.git >/tmp/blog.git.tar.log 2>&1
sudo tar -czvf /tmp/gitbackup/becool.git.tgz /home/git/becool.git >/tmp/becool.git.tar.log 2>&1
sudo tar -czvf /tmp/gitbackup/golang.git.tgz /home/git/golang.git >/tmp/golang.git.tar.log 2>&1
sudo  chown -R ketonghe:ketonghe   /tmp/gitbackup/*
sudo /home/ketonghe/shell/189cloud backup  /tmp/gitbackup/ /selfgit/

Crontab 配置

0 1 * * * /home/ketonghe/shell/backupSelfGit.sh > /home/ketonghe/shell/backupSelfGit.log 2>&1