服务器系统:Centos 6 (查看centos版本命令:lsb_release -a

客户端系统:Windows 7

一、服务器端安装Git

==通常centos上使用yum源安装的git版本过低==

1. 检查系统上是否已经安装git,若已有则卸载

// 查看当前git版本
# git --version
git version 1.7. // 卸载旧版本
# yum remove -y git

2. 安装依赖包,下载最新版本git源码

# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
# wget https://github.com/git/git/archive/v2.13.2.tar.gz
# tar zxf v2.13.2.tar.gz

3. 安装git,配置环境变量

# cd git-2.13.
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install
# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
# source /etc/bashrc // 实时生效

4. 查看git版本号,正确显示则安装成功

# git --version
git version 2.13.

5. 若编译时报错如下

libgit.a(utf8.o): In function `reencode_string_iconv':
/usr/local/src/git-2.13./utf8.c:: undefined reference to `libiconv'
libgit.a(utf8.o): In function `reencode_string_len':
/usr/local/src/git-2.13./utf8.c:: undefined reference to `libiconv_open'
/usr/local/src/git-2.13./utf8.c:: undefined reference to `libiconv_close'
/usr/local/src/git-2.13./utf8.c:: undefined reference to `libiconv_open'
collect2: ld returned exit status
make: *** [git-credential-store] Error

可以按照如下方式解决

// 对之前git的make 操作进行 make clean
# make clean
# wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
# tar zxf libiconv-1.14.tar.gz
# cd libiconv-1.14
# ./configure --prefix=/usr/local/libiconv
# make && make install
// 创建一个软链接到/usr/lib
# ln -s /usr/local/lib/libiconv.so /usr/lib
# ln -s /usr/local/lib/libiconv.so. /usr/lib

然后

# make configure
# ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv/
# make && make install
# echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
# source /etc/bashrc

6. 配置git 用户名及邮箱(客户机安装后也要配置,在这里略过windows的git安装过程)

# git config --global user.name 'your name'
# git config --global user.email 'your email address'

二、服务器设置

1、添加一个git用户

# useradd git

2、初始化一个项目目录为一个仓库

su git
//git的~的实际地址为/home/git
cd ~
//yourName为自定义的仓库名称
mkdir yourName.git
cd yourName.git
git init --bare

至此,我们的仓库完整地址为/home/git/yourName.git

【问题】:建立远程仓库使用 git init 命令,也可以增加 --bare 参数。写不写 --bare 参数有什么区别呢?

【答案】:

  我们知道,一般从远程 clone 下来的仓库会生成一个独立的目录,在这个目录下有当前分支最新版本的文件,同时还有一个 .git 文件夹,与 .git 同级的文件夹称为我们的“工作目录”,我们的修改都在这个目录中进行。而 .git 就是我们 Git 本地仓库的工作目录,我们 add 和 commit 的东西都会被提交到这个目录中。对 git init 命令添加 --bare 参数就表示初始化 Git 仓库的时候不要创建本地工作目录,所以相当于 .git 文件夹下的所有内容直接创建到当前目录下,而不是被放到 .git 目录下。在 Git 服务器上建立好仓库以后,用户就可以克隆这个仓库了。等等。。还没配置用户 SSH 公钥呢,这么就让用户去下载,肯定还是要输入密码才行的。

3、在 Git 服务器上为用户配置 SSH 公钥

还是先在 Git 服务器上使用 authorized_keys 文件来管理所有用户的 SSH 公钥。(密钥登录的方式比密码登录更安全、更便捷,注意保管好自己的私钥,下面会讲到如何生成秘钥对)

git@Linux:~$ mkdir .ssh
git@Linux:~$ touch .ssh/authorized_keys
git@Linux:~$ chmod .ssh/authorized_keys
git@Linux:~$

注意:这里的authorized_keys跟配置好的centos的证书方式ssh登录不同(如已配置),我们git的证书文件路径为/home/git/.ssh/authorized_keys(ssh终端登录所用证书文件路径为/etc/ssh/authorized_keys,一般使用xshell或者putty等工具用的证书登录ssh所用的pub密钥信息都在里面)

4、打开服务器的RSA认证

# vim /etc/ssh/sshd_config
// 找到下面3行并去掉注释
. RSAAuthentication yes
. PubkeyAuthentication yes
. AuthorizedKeysFile .ssh/authorized_keys

重启sshd

service sshd restart

5、为安全起见禁用git用户shell登录

// 为安全起见,禁用 git 用户的 shell 登录
# vim /etc/passwd
// 修改 git 用户的 shell 为 git-shell,路径使用 which git-shell 查看
// 找到如下一行
git:x::::/home/git:/bin/bash
// 修改成如下
git:x::::/home/git:/usr/local/git/bin/git-shell

重启sshd服务

service sshd restart

三、客户端开始使用

1、打开git bash

2、生成秘钥对

  2.1 客户机执行以下命令将在windows的“用户目录/.ssh”下得到秘钥对

cd ~/.ssh
ssh-keygen -t rsa -C “youremail@example.com”

  2.2上传公共秘钥到git服务器有以下2种方式:

  ①复制到git服务器的/home/git/.ssh/authorized_keys文件末尾中;

  ②通过ftp等方式上传后,执行以下命令:

cat 源秘钥文件路径 >> /home/git/.ssh/authorized_keys

2、任意新建一个工作区文件夹

3、执行clone命令(输入自己的IP地址,端口默认为22,如有不同就加上去)

git clone git@ip:/home/git/yourname.git

4、随便新建个文件

5、提交

cd 项目文件下下
git add .
git commit -m "本次提交的备注"
git push

6、服务器端验证是否上传成功

cd /home/git/yourName.git/branches
git log

成功信息:

commit 087966c9f3f73f4aee153213213212132132ac191a7 (HEAD -> master)
Author: upLoadUserName <yourEmailAddress>
Date: Tue Oct 9 08:59:21 2018 +0800

【遇到的坑】

1、回到家git clone一下发觉这玩意儿 Permission denied我了!

解决办法:再次百度鼓捣一趟,原来是的ssh-keygen的时候自定义了密钥的文件名,保持默认回车下去生成的id_rsa能够正常使用,ssh -v 服务器IP 一下发现可能客户端的git默认使用了id_rsa的私钥,待深入学习git考究(原谅我懒人不看git官网原著,专门看百度出来的博客被坑)

2、git push报错1

$ git push
Enter passphrase for key '/c/Users/PC-name/.ssh/id_rsa':
Enumerating objects: , done.
Counting objects: % (/), done.
Delta compression using up to threads.
Compressing objects: % (/), done.
fatal: sha1 file '<stdout>' write error: Broken pipe
error: remote unpack failed: unable to create temporary object directory
error: failed to push some refs to 'git@youripaddr:survey.git'

缓存区不够大,搞大它

$ git config http.postBuffer 

3、git push报错2

$ git push
Enter passphrase for key '/c/Users/hp206/.ssh/id_rsa':
Enumerating objects: , done.
Counting objects: % (/), done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), 103.16 KiB | 685.00 KiB/s, done.
Total (delta ), reused (delta )
error: remote unpack failed: unable to create temporary object directory
To youripaddr:yourprojectname.git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to 'git@youripaddr:survey.git'

权限的问题,因为不是服务器git用户创建的目录
到服务器git目录下

chown -vR git *

完美!

参考文章:

1.搭建私有git服务器进行版本控制
2.向git服务器添加shh公钥

3.搭建Git服务器遇到的那些坑

利用阿里云搭建私有Git服务器的更多相关文章

  1. [开发笔记usbTOcan]用树莓派搭建私有Git服务器

    0 | 思路 在开始编程前,先创建一个版本管理库,以前一直用SVN,但目前用Git的还是比较,正好利用这个机会学习GIt. 想过使用Github提供的免费服务器,但项目目前还没有做开源的准备,于是就有 ...

  2. 用腾讯云Gogs搭建私有git服务器

    前言 经常有需要写不能公开代码的项目,所以只好自己搭建一个私人的git服务器 Gogs的好处在于比Gitlib轻量化了好多,而且是国人写的,官方主页也是中文的 Gogs首页 腾讯云服务器配置: Ubu ...

  3. 利用阿里云搭建frp实现外网远程桌面链接内网电脑

    主要应用场景:针对学生放假回家使用外网无法远程操作学校的服务器或者电脑,这里通过阿里云的云服务器搭建一个frp服务,实现内网穿透,从而可以直接通过远程桌面或者其他工具实现对校园网内的服务器或者电脑进行 ...

  4. utils04_搭建私有Git服务器

    1.远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改.GitHub就是一个免费托管开源代码的远程仓库.但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给G ...

  5. Centos服务器ssh免密登录以及搭建私有git服务器

    一.概述 服务器的免密登录和git服务器的搭建,关键都是要学会把自己用的机器的公钥添加到服务器上,让服务器“认识”你的电脑,从而不需要输入密码就可以远程登录服务器上的用户 免密登录当然是登录root用 ...

  6. 在阿里云上搭建私有GIT仓库

    在阿里云上搭建私有GIT仓库 年轻人就得好好学习,不能这么颓废 最近做项目练练手,用到了github, 但是github访问速度是真的慢啊,下载项目,下载一天了.所以呢,我是个成熟的人了,只好自己搭建 ...

  7. 阿里云搭建git服务器

    阿里云服务器环境: CentOS7.0 jdk1.8.0 jre1.8.0 RAM:1G SWAP:3G MEM:40G apache-tomcat 8.0 1.下载gitlab-ce 11.0 到本 ...

  8. 利用阿里云如何开发一款直播app?

    在开发的过程中应该注意些什么?下面让小编告诉你: 随着互联网的发展,越来越多的人已经加入互联网的行列.而且很多的人也开始直播,和众多的网友分享自己身边事情.互联网还在加速发展,从PC互联网,到移动互联 ...

  9. 阿里云RDS与ECS服务器数据库做主从

    阿里云RDS与ECS服务器数据库做主从 [精] 里云RDS(数据库)基于飞天大规模分布式计算和存储能力,提供超高性价比的单机版实例,同时利用读写分离横向扩展读能力,满足网站类的业务需求.提供稳定.高性 ...

随机推荐

  1. vncserver的安装和使用

    环境:RedHat Linux 6企业版.Xwindows:gnome (红帽默认安装的图形界面) 尽管我们可以使用SSH连接远程通过字符界面来操作Linux,但是对于更多熟悉图形人来说是很不方便的, ...

  2. 刚刚完成了在vs2013中通过 ef连接mysql数据库的工作。感觉没有想象中的简单。试了n次终于成功。故记录成功的方法,希望可以帮到大家

    分两种情况,如果你是用entity framework 5.0的时候 mysql-connector-net的版本不是很重要. MySQL For VisualStudio的版本也不重要 (这个不装就 ...

  3. layer弹出层效果

    layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. http://layer.layui.com/ 演示:h ...

  4. chrome浏览器默认启动时打开2345导航的解决方法

    2345并没有改动chrome内部设置.它仅仅是把全部的快捷方式改动了.包含開始菜单旁边的快捷启动图标. 仅仅须要右键chrome快捷方式.在目标一栏中,把"----chrome.exe&q ...

  5. 转【翻译】怎样在Ubuntu 12.04上配置Apache SSL证书

    关于SSL证书 SSL证书是加密网站信息和创建一个更安全的连接的一种方式.另外,证书能够向网站訪问者展示VPS的身份信息. 证书颁发机构颁发SSL证书.用来验证server的具体信息,而一个自签名的证 ...

  6. Visual Basic的未来之路

        Green首先列出了当时使用VB进行开发的四个基础指导原则:         1.VB和C#共享的通用IDE和平台构建块.         2.共享的“多范式.面向对象.命令式.强类型等”语言 ...

  7. HTTP 错误 404.3 解决

    问题 由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添加处理程序.如果应下载文件,请添加 MIME 映射. 解决 在开始菜单中找到 Visual Studio 命令提示工具.然后用管理员 ...

  8. 超全面的JavaWeb笔记day06<Schema&SAX&dom4j>

    1.Schema的简介和快速入门(了解) 2.Schema文档的开发流程(了解) 3.Schema文档的名称空间(了解) 4.SAX解析原理分析(*********) 5.SAX解析xml获得整个文档 ...

  9. EF的代码优先设计

    CodeFirst 用中文说是代码优先,此技术可以让我们先写代码,然后由Entity Framework根据我们的代码建立数据库 接下来用学生这个例子来演示,有学生表,课程表,和成绩表三张表 首先是M ...

  10. docker学习之-什么是docker

    docker是一个用来装应用的容器,就想杯子可以装水,笔筒可以装笔,书包可以放书一样,可以把网站放到docker里,可以把任何应用放到docker里.