自建 Git
众所周知的原因 github 非常不稳定, 所以想要自建一个 git, 大致步骤如下
- 安装 git
- 系统创建 git 用户
- 初始化 git 仓库
- 生成密钥 免密 clone pull push
- 禁用 git 用户使用 shell 登录
环境介绍
CentOS 8
yum 4.4.2
假设服务器 ip 为 100.10.10.100
操作步骤
bash
# 切换到 su
sudo su
# 安装 git工具
yum install git
# 增加用户名为 git 的用户 后续基本都是用 git 这个用户操作,
useradd git
# 为 git 用户设置密码 , 最好是大于 8 位 字符+数字,避免因弱密码设置失败
passwd git
# 添加一个存放git 仓库的文件夹位置在 /data/git-repository
mkdir /data/git-repository
# 将此文件夹授权给 git 用户,方便后续操作 chown -R [用户名称] [目录名称]
chmod -R git /data/git-repository
# 切换到 git 用户
su git
# 初始化git仓库. "sample" 是项目名(仓库名)
git init --bare /data/git-repository/sample.git
# 现在就可以 clone 但是在 clone 时会让你输入 git 用户的密码, 为了避免每次操作都要输入密码, 我们使用密钥登录
# 启用 ssh 公钥登录
vim /etc/ssh/sshd_config
# 找到这一行把下面这一行启用 默认是带#, 去掉前面的#号即启用
# centos8 删减了 RSAAuthentication, 详细的原因 请参见: https://www.cnblogs.com/Leroscox/p/9627809.html
# AuthorizedKeysFile .ssh/authorized_keys 这一行不用动 这是存储公钥的文件
PubkeyAuthentication yes
# 生成本机的密钥, 生成后存放在 /home/git/.ssh/ 目录下, 这个目录应该有两个文件(id_rsa,id_rsa.pub) id_rsa: 私钥注意保密 , id_rsa.pub: 公钥待会会用到
# 其他的主机指令相同 win 下要使用 powersehll 或者 git bash 生成
ssh-keygen -t rsa -b 4096 -C "your_email@163.com"
# 1.先检查下 /home/git/.ssh/ 下有没有 authorized_keys 这个文件, 没有的话新建一个
# 2.然后把生成的 id_rsa.pub 里的内容 copy 到 authorized_keys 中 应该是一行一个
authorized_keys:
第一行: 放其他需要免密登录的 id_rsa.pub
第二行: 放其他需要免密登录的 id_rsa.pub
第三行: 放其他需要免密登录的 id_rsa.pub
......
# 这个时候已经可以使用密钥登录了, 开始 clone; 命令解释 git clone [用户名]@[服务器 ip]:[仓库所在的路径]
# clone 之后 pull , push 都不需要免密了 尽情操作吧
git clone git@100.10.10.100:/data/git-repository/sample.git
# 为了安全起见, 需要把 git用户禁用shell登录
vim /etc/passwd
# 找到下面这一行, 把后面的 /bin/bash 修改为 /usr/bin/git-shell
# 成功后 git 用户就无法登录了
git:x:1001:1001:,,,:/home/git:/bin/bash
修改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
# 至此搭建完毕 参考资料
廖雪峰搭建 git 服务器: https://www.liaoxuefeng.com/wiki/896043488029600/899998870925664
生成本机密钥: https://www.myfreax.com/how-to-set-up-ssh-keys-on-centos-8/
启用密钥登录: https://www.cnblogs.com/Leroscox/p/9627809.html
# 其他问题
如果看到有说不能访问 ~/.ssh/authorized_keys 这个文件的,可以尝试下修改.ssh目录的权限为700,authorized_keys 文件的权限为 600