动手搭建一个远程git服务器

使用现有云服务器搭建自己的远程git服务器

    最近弄个代码,由于不想整个的来回拷贝,所以想整个中转站。想起还有个半吃灰的云服,所以废物利用,做个远程git仓库做个中转,就不用带着U盘来回跑了。

    想要完成该文章的内容,首先需要一台服务器和一台电脑,或者两台电脑,或者一台电脑一台虚拟机。

    我的设备:Manjaro、centos云服

服务端

    云服务器就不在此推荐,云服的设置网络上有很多经典的详细的帖子就不多做分享。

    首先我们需要在服务端进行配置:

  1. 在服务端安装git,可以去官网查找安装方式:
sudo pacman -S git
sudo apt-get install git #Ubuntu
  1. (可选)配置git名称和信息:
git config --global user.name username
git config --global user.email useremail
  1. 我们不使用root用户或者其他用户创建git仓库,所以我们创建一个用户并根据提示设置两遍密码:
sudo adduser git
passwd git
  1. (可选)将我们创建的用户添加sudo权限:
sudo -s
chmod u+w /etc/sudoers#添加sudo文件的可写权限
vi /etc/sudoers
chmod u-w /etc/sudoers#撤销权限

    在sudoers文件中,添加内容:

git 	ALL=(ALL) 	NOPASSWD:ALL
#NOPASSWD可以免密码登录root,可选
  1. 启用密码登录(因为我们需要将公钥上传到服务器上,禁用之后无法登录)
sudo vim /etc/ssh/sshd_config

    在配置文件中找到PasswordAuthentication并修改为yes:

PasswordAuthentication yes

    默认是yes,如果你没有更改过的话。若是没有该选项,手动添加即可。
最后需要重启ssh服务:

sudo systemctl restart sshd
  1. 创建一个git仓库,我将仓库创建 git用户下的git文件夹下面:

    首先创建并进入该文件夹
cd ~
mkdir git
cd git

    然后init一个Git仓库:

sudo git init --bare orderpod.git#名字随意

    Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。

  1. 更改git仓库的所有者
sudo chown -R git:git orderpod.git

客户端

    首先我们可以测试一下可不可以ssh到服务端:

ssh git@remoteip#替换成你的ip

在这里插入图片描述
    这里我使用的win的git bash测试,结果是一样的。

    图片上半部分是我们启用密码登录的结果,第一次登陆会提示是否创建host写入yes即可,然后输入用户密码,服务端设置的密码即可登录。

    图片下半部分是禁用密码登录,会提示权限拒绝字样。此时你禁用了密码登录,需要登录其他用户编辑 ssh配置文件,如果别的用户无法ssh,恭喜你,重装吧!(一定要万事俱备再去禁用密码登录,不然凉凉)

  1. 我们需要在客户端创建一份密钥,客户端不能是服务端,这是保密协议的通用做法。
ssh-keygen -t rsa

    生成秘钥会让你选择路径,填写密码等,为了方便,直接回车,当然你也可以填写相应的密码。

    默认的生成的路径是~/.ssh/,windows下的路径是C:\Users\Administrator.ssh。

    其中.pub的文件是公钥,我们需要上传到服务器,另外一个是私钥,我们需要保存好。

在这里插入图片描述

  1. 使用scp命令将公钥上传到服务器:

        scp命令比cp更加强大,其使用可见,在bash中键入命令后输入git用户密码即可:
scp .ssh/id_rsa.pub git@remoteip:/home/git/.ssh

在这里插入图片描述

  1. 在服务器上将公钥保存在/home/git/.ssh/authorized_keys中,没有就创建一个文件:

    (1)登录用户,见本节始。

    (2)执行命令将scp的文件中的内容完整的复制到authorized_keys中,若是有多个,手动复制每一个公钥内容占据一行。
cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
  1. 修改.ssh以及authorized_key文件的权限:
chown -R git:git ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
  1. 如果顺利的话,现在可以禁用密码登录了,步骤在上节,为保险,先进行测试。

    退出用户后进行登录测试:

    此刻我们可以直接ssh登录而不用输入密码。如果你将客户端的密钥文件移除,会提示你权限拒绝的字样。

    将密钥放回.ssh文件夹,可以直接登录用户不用输入密码。

    最后,更改设置,禁用密码登录。

在这里插入图片描述

git测试

    到这里,基本上已经创建完成了,进行一轮基本的测试:

    在客户端先克隆一下:

git clone git@remoteip:/home/git/git/....git

    这个时候是空仓库,随便touch个文件后提交:

cd ...
touch 1.txt
git add .
git status
git commit -m "test"
git push

    成功!


    参考链接:搭建Git服务器

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值