概述:如何搭建一个远程仓库?需要哪些准备工作?
1.协议:
Git可以使用四种主要的协议来传输资料:本地协议(Local),HTTP协议,SSH(Secure Shell)协议以及Git协议
1.1本地协议
通过挂载硬盘形成一个共享文件系统
如下命令
克隆一个本地版本库
$ git clone /opt/git/project.git
$ git clone file:///opt/git/project.git
添加一个本地版本库到现有的Git项目中
优点:
简单
缺点:
共享文件系统比较难以配置,访问速度较网络慢,仓库安全性差
1.2HTTP协议
智能HTTP协议
当前比较流行的,运行方式类似SSH和Git
哑HTTP协议
哑 HTTP 协议里 web 服务器仅把裸版本库当作普通文件来对待,提供文件服务。 哑 HTTP 协议的优美之处在于设置起来简单。 基本上,只需要把一个裸版本库放在 HTTP 根目录,设置一个叫做 post-update 的挂钩就可以了
1.3SSH协议
架设 Git 服务器时常用 SSH 协议作为传输协议。 因为大多数环境下已经支持通过 SSH 访问 —— 即时没有也比较很容易架设。 SSH 协议也是一个验证授权的网络协议;并且,因为其普遍性,架设和使用都很容易。
在SSH协议克隆版本库
git clone ssh://user@server/project.git
或者简写
git clone user@server:project.git
优点:
安全
缺点:
太安全
1.4 Git 协议
这是包含在 Git 里的一个特殊的守护进程;它监听在一个特定的端口(9418),类似于 SSH 服务,但是访问无需任何授权。 要让版本库支持 Git 协议,需要先创建一个 git-daemon-export-ok 文件 —— 它是 Git 协议守护进程为这个版本库提供服务的必要条件 —— 但是除此之外没有任何安全措施。
优点:
快
缺点:
缺乏授权机制,端口固定9418
2.生成SSH公钥
我们需要寻找一对以 id_dsa 或 id_rsa 命名的文件,其中一个带有 .pub 扩展名。 .pub 文件是你的公钥,另一个则是私钥。 如果找不到这样的文件(或者根本没有 .ssh 目录),你可以通过运行 ssh-keygen 程序来创建它们。在 Linux/Mac 系统中,ssh-keygen 随 SSH 软件包提供;在 Windows 上,该程序包含于 MSysGit 软件包中。
语法:
$ ssh-keygen
Administrator@USER-20170424ZG MINGW64 ~ (master)
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa):
Created directory '/c/Users/Administrator/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/Administrator/.ssh/id_rsa.
Your public key has been saved in /c/Users/Administrator/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:V+m6zcqdC/86l3qlWfmv4UcuEY3k62gPFHltKu2Hf78 Administrator@USER-20170424ZG
The key's randomart image is:
+---[RSA 2048]----+
| |
| o.. |
| =o.oo|
| o ++o.|
| S . + oo.|
| . o ooo+|
| o .o+Xo|
| . B++O+=|
| +oXX=EO|
+----[SHA256]-----+
查询公钥
$ cat ~/.ssh/id_rsa.pub
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI2f8HRsRd3FUp70uc1dz0S8C4rEkt6VeBBWfVy/eyZGNoL5zB0B3bivPM/tW4p6Z1KZvygl3xaEPmDsheFPdshlFucag64g/xyOb4rOqUthVS7GxJrYJWxUH4dFEyy9Ak/9PQmmTuehqVg9p0pRfYdABvtTzwhDKdUKawDNsQz4IcP4PhstWtQwvFq3qKPRNMKXZafaMliRU8iFNYjqttzjZ81D8xIoXFBQt7xoDiyFf24VGC+293TLjPhMtYDZCD4INTsTLuz43dMwbBJ//8k3fprKISIgLYc4H1rcvUVNWmD2saDqWT81+habi9SlB+VYnvR1bT7W2KWiwboWDx Administrator@USER-20170424ZG