#前言

好久没写笔记了,最近一直在忙毕业论文,今天趁着装Tex Live 2020的功夫忙里偷闲,折腾点东西。

因为自己日常用的东西里有一堆自己写的代码什么的,感觉需要用git进行版本控制,但是感觉传到github上又不太好,虽然虽然可以设置成私密的,但是总感觉不安全,自己弄个私有仓库吧。

#服务端

还是在我小米的Centos系统上架的服务器,装个git就好,这步省略了:

1
2
3
yum install git -y
# or
apt-get install git -y

#创建 git 用户

1
sudo adduser git

#切换到 git 用户

git 其实不用密码啥的,不需要什么操作,只需要生成一下密钥就行。

1
su git

#生成 ssh 密钥

不会的看这里:Linux 下密钥登录

然后把私钥发给自己即可。

#禁止 SSH 登录

为了保证安全:

1
2
3
# 先退出git用户
exit
sudo vi /etc/passwd

git:x:1001:1001:,,,:/home/git:/bin/bash之类的改成git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell[1]

#创建仓库

来到自己的根目录:

1
cd

然后创建仓库,名字自己随便起咯:

1
git init --bare code.git

至此服务器端就都 ok 了。

#多说一句

他们说git这个用户应该禁用shell什么的,如果真的担心的人可以参考下面的参考链接,我自己是觉得没必要。

#客户端

#创建 git 环境

首先在需要整理的文件夹里创建一个新的仓库:

1
2
$ git init
Initialized empty Git repository in /Users/onns/Documents/code/.git/

#设置远端地址

1
git remote add origin git@xm.onns.xyz:/home/git/code.git

#推送代码

1
2
3
git add .
git commit -m "init"
git push -u origin master

#存在问题

不是因为人权之类的问题嘛,git 的默认分支要从master变成main了,但是我不知道为什么出错了,到时候再看看吧,目前先这样。

1
2
3
$ git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to 'git@xm.onns.xyz:/home/git/code.git'

#ssh 配置

我之前用ssh密钥登录的时候,都是要用-i参数的,这次找了很久都没找到git如何指定密钥文件,然后发现大家的方法都是配置.ssh/config,哇我头一次知道原来有这么个玩意儿,🐂🍺 啊!

1
vi ~/.ssh/config

然后把下面这段加进去:

1
2
3
4
5
6
Host xm.onns.xyz
Hostname xm.onns.xyz
User git
Port 22
PreferredAuthentications publickey
IdentityFile ~/Documents/common/key/git

然后就 ok 了。

#参考链接

大家的好像都是互相抄,大同小异,只列举一部分了:

02:23 晚安~


  1. 这个/usr/bin/git-shell其实目录下没有这个文件,但是确实可以工作,有空再查查。 ↩︎