ubuntu上搭建git远程仓库
服务端
#以下都是在root用户操作
apt-get install -y git
创建git用户
#该用户用来运行git服务
#创建 git 用户
adduser git
#进入git用户的home目录
cd ~git
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
禁用shell登录
#出于安全考虑,创建的git用户不允许登录shell
vim /etc/passwd
#找到类似下面行,修改成改行,修改后,若使用git用户登录时,会自动退出
git:x:1000:1000::/home/git:/usr/bin/git-shell
初始化Git仓库
#随便选定一个目录作为git仓库,这里是git用户下project/ 即/home/git/project/
cd /home/git/project/
#在git仓库创建一个test项目
git init --bare test.git
#执行以上命令,会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,
#所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾
chown -R git.git test.git
客服端
使用 SSH 公钥进行认证
#如果某系统用户尚未拥有密钥,必须事先为其生成一份。
#默认情况下,用户的 SSH 密钥存储在其 ~/.ssh 目录下。
ls ~/.ssh
#如果没有id_rsa.pub文件,则客服端生成SSH公钥
#一路回车即可,将生成的id_rsa.pub内容追加到服务器上的/home/git/.ssh/authorized_keys后面,下次你用git时就不需要输入用户名和密码了
ssh-keygen
#上传id_rsa.pub到第一个服务器的/home/git/.ssh/下,进入目录
cd ~git/.ssh
#把客户端的id_rsa.pub追加到服务器authorized_keys后面
cat id_rsa.pub >> authorized_keys
克隆远程仓库
git clone git@服务器ip:/服务器存放项目的目录/项目名称.git
git clone git@127.0.0.1:/home/git/project/test.git
error: insufficient permission for adding an object to repository database ./objects
#git用户组下的 git远程库下
chmod -R 777 *