CentOS下Git服务器搭建全记录
2022-10-26服务器安装配置git
# 安装git $ yum install -y git # 验证是否安装成功 $ git --version # 添加git账户 $ adduser git # 配置git的密码 $ passwd git #切换到git账号,并创建ssh的默认目录和校验公钥的配置文件 $ su git $ cd /home/git #创建.ssh的配置,如果此文件夹已经存在请忽略此步。 $ mkdir .ssh #进入刚创建的.ssh目录并创建authorized_keys文件,此文件存放客户端远程访问的 ssh的公钥。 $ cd /home/git/.ssh $ touch authorized_keys #设置权限 $ chmod 700 /home/git/.ssh/ $ chmod 600 /home/git/.ssh/authorized_keys
配置客户端的ssh私钥并上传服务器
检查是否已经拥有ssh公钥和私钥
用户主目录:
Windows系统:C:\Users\用户名
Linux系统:/home/用户名
Mac系统:/Users/用户名
然后查看是否有.ssh文件夹,用户主目录的.ssh文件夹目录如下
.ssh
├── id_rsa
└── id_rsa.pub
如果没有用ssh-keygen创建ssh的私钥
$ ssh-keygen -t rsa
#三个回车查看用户目录是否有了公钥文件id_rsa.pub
切换到服务器端,把id_rsa.pub文件的内容添加到 authorized_keys中就允许客户端ssh访问了
到此为止配置的客户端应该可以ssh的方式直接用git账号登录服务器
# 在客户端用ssh测试连接远程服务器
$ ssh git@yourip
# 第一次连接有警告,输入yes继续即可如果可以连接上,那么恭喜你的ssh配置已经可以了
服务器端创建测试git仓库
# 切换到git账号 $ su git # 进入git账号的用户主目录。 $ cd /home/git # 在用户主目录下创建 test.git仓库的文件夹 $ mkdir test.git && cd test.git # 初始化git仓库 $ git init --bare # 输出如下内容,表示成功 Initialized empty Git repository in /home/git/test.git/
git init --bare 是在当前目录创建一个裸仓库,也就是说没有工作区的文件,直接把git仓库隐藏的文件放在当前目录下,此目录仅用于存储仓库的历史版本等数据
到此,客户端就可以进行clone或者remote add此仓库了。
客户端测试连接git远程仓库
客户端,可以新建一个文件夹,初始化一个仓库,然后跟远程服务器上的空仓库建立连接。
$ mkdir demos && cd demos $ git init $ touch q.txt $ echo 'your ip.com' >> a.txt $ git add . $ git commit -m 'the first commit' # 把当前仓库跟远程仓库添映射 $ git remote add origin git@your ip.com:test.git # 把当前仓库push到远程仓库。 $ git push -u origin master 如果出现邮箱用户错误,按照提示设置其邮箱以及用户名,设置完毕再次commit,commit成功,然后push至远程仓库 git config --global user.email "w@163.com" git config --global user.name "w" git commit -m "first commit"
禁止客户端shell登录
因为添加了客户端的ssh的公钥到远程服务器,所以客户端可以直接通过shell远程登录服务器,这不安全需要禁用
在/home/git下面创建git-shell-commands目录,并把目录的拥有者设置为git账户。可以直接用git账号登录服务器终端操作。
$ su git $ mkdir /home/git/git-shell-commands #修改/etc/passwd文件 $ vim /etc/passwd # 搜索 :/git:x找到这句, 注意1002可能是别的数字 git:x:1002:1002::/home/git:/bin/bash # 改为: git:x:1002:1002::/home/git:/bin/git-shell
此时我们就不用担心客户端通过shell登录,只允许使用git-shell进行管理git的仓库
如果有其他同事连接git服务器,仅需要把他的公钥也添加到authorized_keys即可
如果后续需要再创建别的git仓库,发现git没有权限了,可以用root创建并赋予git用户权限
cd /home/git mkdir other.git cd other.git git init --bare cd .. chown -R git:git other.git