一:git服务安装
1.安装git相关组件
- [root@gitserver ~] yum -y install git
2.创建git用户
- [root@gitserver ~] groupadd git && useradd git -g git
3.创建git用户授权登录用户文件authorized_keys
- [root@gitserver ~] mkdir -p /home/git/.ssh/
- [root@gitserver ~] touch /home/git/.ssh/authorized_keys
- [root@gitserver ~] chmod 700 /home/git/.ssh
- [root@gitserver ~] chmod 600 /home/git/.ssh/authorized_keys
- [root@gitserver ~] chown git.git -R /home/git/.ssh #所属用户这里设置很关键哦
4.限制git用户权限,禁止shell登录
修改/etc/passwd 下git用户 git:x:1002:1002::/home/git:/bin/bash 为:
- git:x:1002:1002::/home/git:/usr/bin/git-shell
授权了/usr/bin/git-shell 所以还需要拷贝对应文件到git用户目录
- [root@gitserver ~] cp -R /usr/share/doc/git-1.8.3.1/contrib/git-shell-commands /home/git/
- [root@gitserver ~] chown git.git -R /home/git/git-shell-commands/
- [root@gitserver ~] chmod 755 /home/git/git-shell-commands/*
二:创建git仓库
选定一个目录作为Git仓库,假定是/home/gitdata/cnyunwei.git
- [root@gitserver ~] cd /home
- [root@gitserver home] mkdir gitdata
- [root@gitserver home] cd gitdata
- [root@gitserver gitdata] git init --bare cnyunwei.git #--bare 参数是创建空库
- [root@gitserver home] chown git.git -R /home/gitdata/ #必须设置为git用户,否则无法写入文件
三:创建本地用户公钥,并导入authorized_keys:
使用Git Bash 生成密钥:
下载安装: https://git-scm.com/download/win
打开Git Bash (类似于一个CMD窗口)
- ssh-keygen -t rsa -C "email@email.com" #邮箱这里可以选填,全部敲回车即可生成密钥
密钥文件在C:Usersusrname.ssh 下,将id_rsa.pub 的文件添加到服务器authorized_keys 文件中即可。
四:关联本地仓库和远程空仓库(这里是通过Git Bash 命令方式关联)
git是采用SSH传输,如果服务器的SSH端口不是22 就需要调整URL地址
- cd e:/cnyunwei #进入本地项目文件夹目录
- git remote add origin ssh://git@192.168.31.10:22000/home/gitdata/cnyunwei.git #关联本地仓库到远程空仓库
默认SSH端口的情况下使用:
- git remote add origin git@192.168.31.10:/home/gitdata/cnyunwei.git
如果出现下面的报错,是没有本地仓库的意思,先生成本地仓库再关联即可。
- fatal: Not a git repository (or any of the parent directories): .git
- git init
- git remote add origin ssh://git@192.168.31.10:22000/home/gitdata/cnyunwei.git
测试一下提交到远程仓库:
- git add --all
- git commit -m "初始化"
- git push -u origin master
git服务器的安装到此完成,如果在提交文件到远程仓库时提示如下错误,请检查服务器上git仓库所属用户和用户组是否为git 。
- remote: error: insufficient permission for adding an object to repository database ./objects
- remote: fatal: failed to write object
如果遇到protocol error: bad line length character: This问题
有可能是你修改了/etc/passwd中git为/sbin/nologin改成和本文一样的即可
转自https://www.cnyunwei.cc/archives/1072