自己有一台centos7的服务器,想在上面搭建一个git服务器,以下是我搭建的过程及采坑记录。
- 查看自己服务器是否有安装git:
查看命令:git --version
如果服务器没有安装git,安装命令如下:
使用yum安装:yum install git
-
添加git用户及设置用户密码:
useradd git
passwd git -
创建用户之后,会自动在home目录下生成git用户的文件夹(git)
-
创建git仓库,命名为stonelalala.git
切换到git文件夹,mkdir stonelalala.git
切换到stonelalala.git
初始化仓库:git init --bare
不使用--bare选项时,就会生成.git目录以及其下的版本历史记录文件,这些版本历史记录文件就存放在.git目录下;而使用--bare选项时,不再生成.git目录,而是只生成.git目录下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录下面,而是直接存放在版本库的根目录下面
修改文件夹所有者:chown -R git:git stonelalala.git -
安装windows客户端git
创建用户:git config --global user.name '你的名字‘
添加邮箱:git config --global user.email '你的邮箱’ -
将linux服务端与windows客户端关联起来
打开git bash生成ssh key
命令:ssh-keygen -t rsa -C “邮箱”
生成ssh私钥和公钥,生成的文件在用户文件夹下的.ssh文件夹下面 -
git服务端打开rsa认证,/etc/ssh/sshd_config,修改为
重启sshd,命令:/etc/rc.d/init.d/sshd restart -
在服务端的git文件夹下创建.ssh文件夹,添加文件authorized_keys,将windows客户端生成的公钥写入该文件,一个用户一行。
修改文件夹所有者 chown -R git:git .ssh
修改.ssh文件夹权限(chomd 700 .ssh)以及authorized_keys(chmod 600 authorized_keys)权限 -
禁用git用户shell权限
-
客户端克隆仓库
克隆的时候可能会提示permission deny,即使你输入的密码正确。
这可能是git-shell没有添加到shells中,我们需要手动添加首先我们需要找到
git-shell
的安装位置,如果没有被添加在/etc/shells
中,我们需要手动将其添加进去(通常git-shell
路径为/usr/bin/git-shell
)。接下来,我们就可以把默认的
shell
替换成git-shell
了:$ sudo chsh git -s $(which git-shell)
-
之后我们就可以进行git clone操纵,因为git用户只能使用git-shell,不能使用ssh登陆,所有只能进行push/pull操作
-
遇到的坑:1.禁用ssh登陆之后,git clone命令一直提示输入密码,但是输入正确密码之后,仍然提示错误,这个是因为没有将git-shell添加到/etc/shells的原因,添加之后可以解决