安装git:

一、在/usr/local下新建目录git,并下载源码

wget https://www.kernel.org/pub/software/scm/git/git-2.15.1.tar.gz

解压:

tar -xzvf git-2.15.1.tar.gz

进入目录,然后安装git

make prefix=/usr/local/git all
make prefix=/usr/local/git install


二、安装过程中的各种错误

1. 出现cc不存在这种错误,表明gcc和g++没有安装:

yum install gcc 
yum install gcc-c++ 


2. 致命错误:openssl/ssl.h:没有那个文件或目录

需要安装以下依赖

sudo yum install openssl-devel


3. http.h:6:23: 致命错误:curl/curl.h:没有那个文件或目录

#include <curl/curl.h>

安装:

yum install libcurl-devel


4. http-push.c:19:19: 致命错误:expat.h:没有那个文件或目录

安装:

yum install expat-devel


5. Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN Failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] 错误 2
make: *** [perl/perl.mak] 错误 2

安装:

yum install perl-ExtUtils-MakeMaker package 


6. * tclsh Failed; using unoptimized loading

安装:

yum install -y gettext


以上就是安装过程中碰到的一些问题。



三、添加路径至PATH

sudo vim /etc/profile
export PATH="/usr/local/git/bin:$PATH" 
source /etc/profile #使配置立即生效



搭建git服务器:

一、创建一个新的用户git用来运行git

groupadd git
useradd git -g git
passwd git  #参数是用户名


最好切换到git用户 不然后面新建的git仓库都要改权限。
su - git


二、初始化git服务。

cd /home/git
git init --bare test.git

chown git:git test.git


三、将git-upload-pack进行软链接,以确保客户端进行git clone不会报错:

ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack

这就算初步完成了git服务端的搭建。


四、搭建完成,进行测试

在另一台PC(客户端)进行git clone操作:

git clone git@192.168.1.103:/home/git/test.git

但是发现要输入git服务器的密码,这对客户端造成了影响,为了避免所有客户端在git时需要密码,可以添加证书登陆,这也是github的管理方法,每个客户端将自己的公钥给服务端保存,这样就存在一个认证关系了。


五、开启RSA认证

在git服务器上打开RSA认证:/etc/ssh/sshd_config

sudo vim /etc/ssh/sshd_config

 RSAAuthentication yes
 PubkeyAuthentication yes
 AuthorizedKeysFile /home/git/.ssh/authorized_keys #你的authorized_keys所在路径


在新建的git(/home/git)下新建.ssh文件夹,并新建一个authorized_keys文件用来存放客户端的公钥。

这里必须利用su - git将用户切换为git,再进行新建文件夹和文件的操作,这样保证.ssh和authorized_keys文件的所有者都是git。

$ cd /home/git/
$ su - git #切换用户为git
$ mkdir .ssh #新建文件夹
$ chmod 700 .ssh 
$ touch .ssh/authorized_keys  #新建文件
$ chmod 644 .ssh/authorized_keys

将客户端的公钥文件(id_rsa.pub)中的内容复制到authorized_keys文件中。要注意复制中不要漏掉字母,开头一般是:ssh-rsa。


六、git用户设置为不能shell登录

vim /etc/passwd
找到:
git:x:502:502::/home/git:/bin/bash
改为
git:x:502:502::/home/git:/usr/local/git/bin/git-shell


七、最终测试

在客户端运行git clone命令:

git clone git@192.168.1.103:/home/git/test.git

可以直接下载,不用输入密码。


在客户端上运行git push命令

首先在要推送的文件夹下,运行git init初始化git仓库:

git init
然后,运行git status查看哪些文件尚未add,然后运行git add将尚未add的文件add,然后commit。
git status
git add . //.表示将所有修改的文件都add
git commit -m "test" //提交一个commit


当然要确保origin已经添加了:
git remote -v #查看服务器地址是否存在


没有的话则添加:
 git remote add origin git@192.168.1.103:/home/git/test.git

然后可以执行git push:
git push origin master:master

origin表示推送到origin远程,第一个master是本地分支,第二个master是远程分支,如果该远程分支不存在将被创建。



注意点:

SSH对公钥,私钥的权限和所有权的要求是非常严格的,总结如下:


1,下面两个目录的所有权必须是git(上面创建的git用户),所属组也应该是git,权限必须为700

①/home/git # chmod 700 /home/git

②/home/git/.ssh # chmod 700 /home/git/.ssh

2,公钥文件的所有权必须是git,所属组也必须是git,权限必须是644

①/home/git/.ssh/authorized_keys #c hmod 644 /home/git/.ssh/authorized_keys

如果权限不对,会造成不能正常登录,报错信息:Permission denied (publickey,gssapi-with-mic.....)

树莓派3+centos7实现git服务器的更多相关文章

  1. 在Xcode中安装的git中禁用osxkeychain凭证帮助程序

    解决方法如果您的问题主要关注的是安全性,并且您希望每次都输入密码,那么我会接受钥匙串以适应您的目标>进入osx钥匙串应用程序,>如果您使用的是https,请查找服务器名称>通过单击更改其设置,并在选项卡“访问控制”标记“询问钥匙串密码”下>如果需要,请从列入白名单的应用程序列表中删除git-credential-osxkeychain应用程序.请注意,在Linux上,默认行为也是自动发送凭据.

  2. osx – 无法创建目录/ var / teamsserver

    OpenSSH_6.2p2,OSSLShim0.9.8r8Dec2011debug1:Readingconfigurationdata/etc/ssh_configdebug1:/etc/ssh_configline20:Applyingoptionsfor*debug1:Connectingto1.2.3.4[1.2.3.4]portPORT.debug1:Connectionestablished.Couldnotcreatedirectory‘/var/teamsserver/.ssh’.debug

  3. ios – Xcode Server 4.0 git从构建触发脚本推送

    我为一个托管在github上的项目安装了一个XcodeBot.我按照步骤和设置机器人来使用我现有的SSH密钥.验证成功,项目结算和建立.然后,我在预触发器操作中添加了一个shell脚本,它增加了plist中的版本,将其标记,并将该更改提交到github.但是当我尝试从shell脚本执行gitpush时,我得到:–推送到git@github.com:spex-app/spex-ios.git权限被拒

  4. xcode – 为什么Jenkins在我的Mac上运行不会连接到本地的git repo?

    我正在尝试使用Jenkins实现自动化构建,用于我的iOS项目.我添加了Git插件,但是一旦我尝试将git的URL放在项目的git配置中,它会在下面的屏幕截图中显示错误.这里Jenkins不能从repo克隆到其工作空间.解决方法在大多数情况下,gitbarerepo有扩展名.git我的意思是(其他)/test1看起来不正确,我认为应该是(其他)/test1.git在我的mac上有同样的错误.

  5. 哪些Xcode项目文件可以从我的git repo中排除?

    我正在开发一个iOS项目,并使用git进行版本控制.我正在与另一位开发人员合作.我应该保留哪些Xcode项目文件在repo中,哪些可以排除,这样不会对其他开发者产生负面影响?这里有一些非代码文件,git告诉我已被修改或添加…

  6. xcode – 不能推送到远程git存储库

    所以我一直在麻烦把我最近的提交到我在Bitbucket上设置的远程仓库.我最初使用Xcode,并且已经要求thisquestion,并建议使用终端来推送而不是Xcode.现在,我尝试了终端,但是并没有解决问题.但是当我尝试gitpush时,它确实给了我更详细的错误信息我是这些远程存储库的新手,并且Xcode上的一切都正常工作,所以如果您建议我在终端中执行某些操作,如果您描述了如何执行此操作,这将有

  7. ios – Xcode上传错误:无法打开ssh会话. (16)

    注意:我们终于上传了该应用程序,但是我们并没有真正解决这个问题,所以如果有人可以分享一些有关这个问题的宝贵意见或经验,我将不胜感激.我也检查了以下2个类似的问题,但这些没有帮助:>Erroruploadingiosapplicationtoitunesconnect“failedtoopensshsession(16)”>AppStoresubmission/distributionerror“f

  8. Xcode 4.5自动更改.xib文件

    由于我升级到Xcode4.5,我发现它会自动删除我访问的每个xib文件的一部分.这是一节:我几乎可以这样生活,但是当我再次访问该文件时,我发现还有更多的“自动”更改.他们变得更加多样,难以表征,所以我不会包括例子,除非我真的需要.我不明白这里发生了什么.我正在寻找两个答案之一:>有没有办法禁用这个?>为什么会发生这种情况,有没有办法强制Xcode将这些更改应用于所有xib文件,以便我可以做到这一点?

  9. ios – XCode中的源代码管理是一场噩梦 – 任何人都可以提供建议?

    使用Git与Xcode(4.3)是一个真正的噩梦.这是一个场景…我承诺我的变化–好的.我跳回主人拉动变更.突然间我得到:是吧?解决方法我只是添加这些文件到我的.gitignore文件.没有必要与其他开发人员分享.所以我有:在.gitignore中请注意,您链接的stackoverflow问题说不排除project.pbxproj,但它并不表示不排除*.xcworkspace.但是,我目前没有使用工作区功能.如果您使用工作区功能,则可能需要包含这些文件,但忽略xcuserdata文件.

  10. Xcode表示“未提交的更改”每当我尝试git拉或推

    我在我的项目中使用git,每当我尝试从Xcode中抽出时,我得到“未提交的更改”,并阻止我拉/推.我尝试提交并找到一个扩展名为*.xcuserstate的文件,每当我打开/滚动到Xcode中的任何项目文件时,这个文件被修改.这让我没有任何选择,只能做一个包含该文件的单一提交,该文件用无意义的提交填充git提交日志.这是有办法阻止这种行为吗?

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部