ubuntu配置git私人服务器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LiuRenyou/article/details/78381176

ubuntu下搭建git私人服务器

ubuntu下搭建git私人服务器的催化剂:

主要原因是windows下的产品收费

Copssh

个人版免费,团队版39RMB.

Gitstack

30天试用期,到期个人版只能两个人用。并且2016年大概年底左右吧,不能破解了。

码云

这个还可以,就是5G不够

软硬件条件

服务器

Windows下的虚拟机ubuntuip192.168.191.130

客户端

Windowsip192.168.191.1)和windows下的虚拟机(ip192.168.191.130

如果你的windows ip的前三位(192.168.191)和虚拟机的不一样,那么你就需要在ubuntu使用网络桥接模式,使他们的前三位相同。

写这篇博客的原因

整理一下这几天不眠不休地奋战,为以后在别的公司配置git服务器节约时间

扫描二维码关注公众号,回复: 3518014 查看本文章

为了广大朋友们,因为我开始学的时候很困难,所以想尽量写的详细一点

配置git服务器

前提

已经在windows装好vmware并且在vmware里面装好了ubuntu,并且ubuntu里面有一个用户(例如lry  admin

ps:显示隐藏文件ctrl+h

1root用户,安装软件

创建一个root用户,并且安装git-core,openssh-server,openssh-client

 

2:git用户

添加一个git用户

 

3:创建一个空仓库

/home/git/下面新建一个code文件夹用于存放资源,并且在code/下面初始化一个仓库

 

4:生成公钥私钥

lry用户下面使用ssh-keygen -t rsa,不一定要像我一样在/home/git里面敲ssh-keygen -t rsa

只要是lry用户下就可以(@符号前面是lry

 

之后在lry~/.ssh下你会看到(有pub的是公钥,另一个是私钥)

 

5:将生成id_rsa.pub放到服务器的/home/git/.ssh/authorized_keys里面

 

由于我是在本虚拟机创建的id_rsa.pub,所以我就直接使用本地复制命令cp

权限问题要在root下面cp,所以地址就写绝对地址,先放到/home/git

(如果你是在另一个虚拟机(ip前三位要一样)生成的id_rsa.pub并且目录也是一样的话那么使用scp /home/lry/.ssh/id_rsa.pub [email protected]:/home/git/

)复制完了之后发现多了一个文件如下图

 

/home/git下建立一个.ssh文件。然后用追加cat把刚才的公钥加到authorized_keys

不要忘了>>

 

结果就发现.ssh下面多了一个authorized_keys如下图

 

Ps:如果你以后加入新的用户,只需要把他的id_rsa.pub利用远程scp发送过来然后cat进去就可以是实现无密码clonepush等操作。

6:修改所有者/home/git的所有者为git用户

 

7:添加权限

 

第三条打错了,所以第四条进行再次更正

8:安装vim

因为接下来要修改一些配置文件,所以要用到vim编辑器修改

 

9修改/etc/ssh/sshd_config文件

AuthorizedKeyFile    %h/.ssh/authorized_keys的注释打开,即删掉#

 

 

这个vim很有意思,你进去别乱动,先上下左右定位到#,按一下x就把#删了,再然后按一下esc,然后:wq,enter推出(:wq是保存退出的意思,:q!不保存退出)

10重启ssh服务并且修改/etc/passwd文件防止shell登陆

 



进去之后找到最后一行,修改成下一张图的那个样子,这里的修改也是利用x一个一个删掉,然后利用i插入进行添加。

具体:定位到git:/这个斜杠后的b字母,用x一个个的删除掉bin/bash,然后按一下a(光标后插入)输入usr/bin/git-shellesc :wq保存即可。

 

到这里为止就配置好了git服务器,下面来测试一下。

11git目录下clone test.git要输入git密码

猜想是因为我的id_rsa.pub是在lry的目录生成的(~/.ssh/id_rsa.pub,git服务器的authorized_keys里面没有git用户的公钥,只有lry用户的公钥,所以导致要输入密码。

先看一下ifconfig   ip192.168.191.130

 

接着在/home/git/code下面clone test.git要输入密码

 

clone下来了

 

12lry目录下clone无需密码因为服务器的/home/git/.ssh/authorized_keys有我们目录的公钥,并且服务器在/etc/ssh/sshd_config下打开了ssh公钥认证注释。

无需密码

 

下图可以看到在lry目录下已经有test


我们把这个文件删了

 

13windows测试

因为我没有把windows的公钥给服务器,所以需要输入git的密码,但是是可以clone

 

在我的主目录(c:user/liurenyou/)下就多了一个test文件

 

我们在test里面加一个ok.txt文件,里面随便写什么

 

把他push到服务器如下图

cd test

git add .

git commit -m “ add ok.txt”

git push origin master

 

我们把windows主目录下的test给删了,然后再clone下来

 

发现多了一个ok.txt,说明上次push确实生效了。

 

外加一句啊,如果你想使用windows实现无密码clone push的话,scp命令我不知道gitbash支不支持,但是我试了一种方法,就是把你生成的公钥保存在你clone下来的仓库里,然后在push到服务器,服务器再拿到他cat进authorized_keys就可以了,实现方式有很多。

总结:

到这里就算是完成了一个小型的git服务器的搭建,也算是对自己这两天不眠不休的安慰吧。但最希望的还是能够让更多的朋友们受益。有不懂的地方或者要视频的可以找我,我录了一个一个小时左右的视频,里面详细的讲了我是如何配置git服务器的。在录视频的时候我在git用户目录里clone test.git的时候要输入git的密码,所以我那时候认为是我还没有配置好一些地方。在我录完视频写博客的时候才发现原来在lry目录里clone不用git的密码,这才有了上面的第12条。我这才明白了原来之前都是在git目录里面clone,当然要输密码啊。经过这几天,成长很大吧,从一个一行命令都不会的人也算是变成了一个懂点linux命令的人了。如果上面有鄙人的拙见,欢迎提出讨论。QQ:953506233.要视频的可以找我,或者留下邮箱我私下发给你。

猜你喜欢

转载自blog.csdn.net/LiuRenyou/article/details/78381176