【Git私服】搭建私有git仓库,免密pull and push

基础系统环境

服务器系统:CentOS Linux release 7.4.1708 (Core) (查看centos版本命令:lsb_release -a)
客户端系统:Windows 7

服务器端安装git

1.检查当前版本

// 查看当前git版本
# git --version
git version 1.7.1

// 如果版本还是2一下的建议卸载旧版本
# yum remove -y git

2.下载git

# 直接下载
# wget https://github.com/git/git/archive/v2.13.2.tar.gz

#或者通过其他其他渠道下载并放置于/usr/local 下面
# tar zxf v2.13.2.tar.gz

3 . 编译,安装,环境变量

# cd git-2.13.2
# 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    // 实时生效 

  1. 查看git版本号,正确显示则安装成功
# git --version
git version 2.13.2

服务器端配置

1.生成一个git系统用户
(建议git 设置为普通用户,如果遇到特定的文件或者文件夹的操作权限问题在单独给权限)

# useradd git

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

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

#注意区分git init 和git init -bare 的区别,参见备注#1
git init --bare 

3、服务器为git用户配置 SSH 公钥(用于允许免密pull 或者push文件)
还是先在 Git 服务器上使用 authorized_keys 文件来管理所有用户的 SSH 公钥。(密钥登录的方式比密码登录更安全、更便捷,注意保管好自己的私钥,下面会讲到如何生成秘钥对)
划重点,此处必须注意 否则免密会出问题


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

4、打开服务器的RSA认证

# vim /etc/ssh/sshd_config
(找到下面3行并放开,如果没有添加上)
RSAAuthentication yes     
PubkeyAuthentication yes     
AuthorizedKeysFile  .ssh/authorized_keys

5、重启sshd 服务

service sshd restart

客户端操作

  1. 生成秘钥对
cd ~/.ssh
ssh-keygen -t rsa -C “[email protected]” 
(会在 ~/.ssh 目录下生成两个文件 ,id_rsa id_rsa.pub)
  1. 上传id_rsa.pub 到服务的
    (上传公共秘钥到git服务器有以下2种方式)
①复制到git服务器的/home/git/.ssh/authorized_keys文件末尾中(pub 文件的内容 粘贴到authorized_keys的末尾);
②通过ftp等方式上传后,执行以下命令:
cat 源秘钥文件路径(已把对应的pub文件上传到服务器上) >> /home/git/.ssh/authorized_keys
  1. clone项目开始畅快的玩耍了
git clone git@ip:/home/git/yourname.git

注意事项


- 关于服务器配置ssh相关

- 可能发现我们平时git clone 时候 clone 后面的地址不一样如下:

https的clone长这样:
git clone https://github.com/project/repo.git
ssh git clone是长这样的:
git clone [email protected]:project/repo.git

- 区别就是所用的协议不同

https用443端口,可以对repo根据权限进行读写,只要有账号密码就可进行操作。
ssh则用的是22端口,也可以对repo根据权限进行读写,但是需要SSH Keys授权,这个key是通过ssh key生成器生成的,然后放在github上,作为授权的证据,这样的话就不需要用户名和密码进行授权了。

备注

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

猜你喜欢

转载自blog.csdn.net/zhujohnle/article/details/87865726
今日推荐