Git服务器搭建简明教程-程序员宅基地

技术标签: 搭建  GIT服务器  git  ubuntu  教程  

1前言

本文详解在Ubantu 16下搭建Git服务器,力求让读者知其所以然,仅需安装Git和ssh,而无需其他软件。

2服务器搭建

在真实服务器或虚拟机里操作均可。另外,如果用VMware Workstation 16 Player的话,默认不用配置虚拟机网卡,本地机就能Ping通。教程使用普通用户操作,如果是root用户,就不用加sudo了,命令将更加简洁。

2.1安装Git和SSH

已安装过的最好也再来一遍,以更新到最新,除非自己很清楚。

sudo apt-get install git
sudo apt-get install ssh
service ssh start

2.2新建用户

方便管理仓库,这里新建一个叫git的用户,名字可以任意,但推荐取名为git。建议以后Git的相关的东西,都放到这个用户目录下。

注意,中途输入的密码是给新建的git用户设置的密码,其他直接回车使用默认信息即可。

sudo adduser git

注意,以上只是创建了叫git的用户,后续的操作并没有切换到该用户进行。

2.3创建登录证书

创建路径.ssh,然后创建authorized_keys文件,这里路径和文件名不能任取,该文件用于存放各个git客户端的RSA公钥,只有在这个列表里的客户端才能连接git服务。公钥在下一步创建。

cd /home/git/
sudo mkdir .ssh
sudo touch .ssh/authorized_keys

2.4本地端创建密钥

注意,这一步在本地端进行。不同的本地用户有不同的KEY。

ssh-keygen -t rsa

这里在windows下进行,这个命令可以在CMD、PowerShell或Git bash里执行。这里选Git bash,任意空白处右键点击Git bash here,然后右键粘贴执行,中途全默认按回车即可。

 如上图就已经生成,在用户根目录的.ssh文件夹内,id_rsa.pub就是我们要的公钥:

2.5本地端公钥上传

这里只是方法之一,只要能把id_rsa.pub传到服务器就行。scp是ssh的文件复制命令。

scp id_rsa.pub [email protected]:/home/git/

注意,使用你自己的ip地址。

我们来到上边.ssh文件夹内右键点击Git bash here,右键粘贴执行,中途输入yes,然后输入刚才创建git账号的密码,成功后如图:

 2.6服务器添加用户公钥

 注意,在服务器端进行。使用cat指令将公钥追加到authorized_keys文件。

sudo sh -c "cat id_rsa.pub >> .ssh/authorized_keys"

注意,如果不是root用户,使用如下方式则会报权限错误:

sudo cat id_rsa.pub >> .ssh/authorized_keys

如果想确认是否成功,可以输入命令查看:

head -n 5 authorized_keys

命令的意思是查看authorized_keys文件前5行的内容。

2.7创建仓库存放路径并设置所属用户为git

路径可任意起名,这里叫gitrepo。

sudo mkdir gitrepo
sudo chown git:git gitrepo

2.8初始化仓库并设置所属用户为git

这里建了一个叫test的仓库。

cd /home/git/gitrepo
sudo git init --bare test.git
sudo chown -R git:git test.git

因为这里的test.git路径下有多个文件,所以加-R参数递归。

到此,git服务器就算搭建完成,URL地址如下:

[email protected]:/home/git/gitrepo/test.git

安全选项

公钥列表里的客户端都可以无需密码直接可以使用git用户登录shell,如:

ssh [email protected]

下面通过修改/etc/passwd实现限制:

sudo nano /etc/passwd

按pagedown翻到最下面:

 找到git用户,一般都在最后,按键盘方向键移动光标到最后,将

git:x:1001:1001:,,,:/home/git:/bin/bash

改成:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

改完之后按照提示,分别按ctrl+X,y,回车,实现保存退出,这样就OK了。

3测试

以下简单测试Clone和Push,如果你之前用过git,那么得到上边的仓库地址后应该就非常熟悉了。

3.1 Clone

在本地电脑上新建一个文件夹A,右键打开Git bash here,试试克隆,会得到一个空的test文件夹。

git clone [email protected]:/home/gitrepo/test.git

注意,ip地址请改成自己的。 还有,这里并不需要输入上边创建git用户的密码,如果需要输入密码,说明公钥添加有误,请重新检查。

 3.2 Push

进入test文件夹内,右键新建文本文档,内容任意。

右键打开Git bash here,添加所有文件,然后提交。

git add -A
git commit

在弹出的文本中填入本次更改日志,测试用就随意写,然后保存关闭。

通过克隆来的远程仓库,默认有个别名叫origin,所以推送可以直接这样:

git push origin master

 3.3再次克隆

新建一个文件夹B,并进入,右键打开Git bash here克隆,和之前一样:

git clone [email protected]:/home/git/gitrepo/test.git

可以看到这个就是刚才提交的文本文档:

 4使用TortoiseGit的密码弹窗问题

TortoiseGit是一个图形界面的Git,不用打“繁琐”的命令了。

4.1 尝试Clone

建一个新建文件夹C,右键Git Clone,在URL中填入:

[email protected]:/home/git/gitrepo/test.git

 如果这时直接点击OK,那么会有输入远端git用户密码的提示框,因为远端已经有本地机的公钥了,这显然不符合常理。这一点TortoiseGit和Git bash不一样,需要另外加载私钥。

当然,这里要是输入了上边创建的git用户的密码,也能克隆,这个密码只有管理员知道,自己现在就是管理员,多个git客户端的情况下别人就不知道了,除非你把密码告诉世界上所有人咯。

4.2创建PPK私钥

 找到开始菜单TortoiseGit文件夹下的PuTTYgen打开:

 按图中步骤操作,中间会有弹窗提示,默认即可。加载2.4步骤创建密钥生成的私钥id_rsa,然后另存为putty_rsa.ppk。

 4.3 Clone

回到新建文件夹C下,右键Git Clone,Load Putty Key 中加载刚才生成的putty_rsa.ppk

 可以看到,已经能正常Clone了。

END

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40692629/article/details/124420970

智能推荐

【附3.7安装包】python安装包下载及安装(超详细)_python3.7下载-程序员宅基地

文章浏览阅读4.2k次,点赞3次,收藏12次。【附3.7安装包】python安装包下载及安装(超详细)_python3.7下载

java设计模式-程序员宅基地

文章浏览阅读1.3k次,点赞37次,收藏15次。设计模式本质上是面向对象设计原则的实际运用,是对类的封装性、继承性、多态性以及类的关联关系和组合关系的充分理解。最早诞生在建筑模式,后来引用到软件领域,经过前辈的代码设计的经验,总结的一套可以的设计模式。java中设计模式共23种分为3大类。

第八届福建省大学生程序设计竞赛-重现赛 L Tic-Tac-Toe_2017年第八届福建省大学生程序设计竞赛正式赛ltic-tac-toe-程序员宅基地

文章浏览阅读897次。Problem L Tic-Tac-ToeAccept: 248 Submit: 552Time Limit: 1000 mSec Memory Limit : 262144 KB Problem DescriptionKim likes to play Tic-Tac-Toe.Given a current state, and now Kim i_2017年第八届福建省大学生程序设计竞赛正式赛ltic-tac-toe

基于Vue.js+Node.js+Mysql_vue+node+mysql管理端项目-程序员宅基地

文章浏览阅读281次。以功能强大、开发方便的Vue.js作为美食汇系统开发,通过其模块化设计模式,可以构建出更高效、更快捷、可维护性强、更符合用户体验的用户界面。使用前后端分离的思想,前端使用Vue.js来实现,后端通过Node.js来实现,通过Node.js连接前端和数据库MySQL。该网站主要分为首页、个人中心、发表中心和登录注册四个模块,通过本网站,用户没有网站账号的可以提供注册的功能,有账号的用户可以直接登陆进入网站,同样可以浏览首页里面相关的菜品,也可以采取直接搜索自己想要的菜品。2.2.2 响应式数据双向绑定 7。_vue+node+mysql管理端项目

高压吸尘器以灵动微单片机MM32SPIN0280为主控_灵动微单片机运放-程序员宅基地

文章浏览阅读187次。针对高压吸尘器应用方案,灵动微以MM32SPIN0280为主控。MM32SPIN0280系列使用ArmCortex-M0内核,最高工作频率可达96MHz,内置128KB的Flash和8KB的SRAM的高速存储器,针对电机应用内置4个运放、5个比较器,工作电压为2.0V-5.5V。_灵动微单片机运放

清华大学陈渝老师操作系统课程笔记整理_清华大学 陈渝 操作系统 ppt-程序员宅基地

文章浏览阅读940次。各章节知识点总结:【操作系统】 Operation System 第一章:概述【操作系统】 Operation System 第二章:操作系统基础操作【操作系统】 Operation System 第三章:连续式内存分配【操作系统】 Operation System 第四章:非连续式内存分配【操作系统】 Operation System 第五章:虚拟内存【操作系统】 Operation System 第六章:页面置换算法【操作系统】 Operation System 第七章:进程和线程【操作_清华大学 陈渝 操作系统 ppt

随便推点

DB Link 的方式访问外部数据库数据库直连 DBCO_sap dblink-程序员宅基地

文章浏览阅读2k次。DB Link也是我们会在企业内部经常会用到的一个取数的方法,简单快捷。但是首先需要在( DBCO )中创建。DATA: lo_sql TYPE REF TO cl_sql_statement, ltm_open TYPE REF TO cl_sql_connection, lo_result TYPE REF TO cl_sql_result_set,*-Exception Class for SQL Error zci_sql_exception_sap dblink

rhce day1-程序员宅基地

文章浏览阅读155次。点显示系统的根设备使用信息并以邮件的形式发送到。确保延迟任务是使用非交互模式建立。小时后备份系统中的用户信息文件到。用户可以执行延迟任务的设定。确保此任务为系统定时任务。

Linux下面安装ftp客户端和服务端vsftp_linux没有ftp客户端-程序员宅基地

文章浏览阅读1.2w次。在Linux下面使用ftp工具,必须有客户端和服务端。1、使用环境客户端为Redhat Linux6.4系统,需要到iso文件中找到对应的Packages包,版本一定要和os版本保持一致,Linux6.4系统的ftp版本号为ftp-0.17-53.el6.x86_64.rpm ,上传到服务器,使用rpm安装即可。2、安装好客户端后,必须在服务端安装vsftpd,使用环境服务端为Cent..._linux没有ftp客户端

stm32定时器_hal_timex_breakcallback-程序员宅基地

文章浏览阅读588次,点赞23次,收藏15次。缺点:不精确、占用CPU资源还记得以前在开发C51的时候,经常使用stc_nop_();i = 4;j = 129;k = 119;dodo定时器工作原理:使用精准的时基,通过硬件的方式,实现定时功能。定时器核心就是计数器。_hal_timex_breakcallback

【Kaggle】Kaggle数据集如何使用命令语句下载?_kaggle数据集下载-程序员宅基地

文章浏览阅读4.6k次,点赞5次,收藏11次。【Kaggle】Kaggle数据集如何使用命令语句下载?_kaggle数据集下载

【转】C#项目打包,并自动安装SQL数据库_c#安装sql-程序员宅基地

文章浏览阅读692次。一).创建部署项目 1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。 2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在“名称”框中键入 setup1。 3. 单击“确定”关闭对话框。 4. 项目被添加到解决方案资源管理器中,并且文件系统编辑器打开。 5. 在“属性”窗口中,选择 _c#安装sql

推荐文章

热门文章

相关标签