Git主要使用4种协议传输数据:本地协议,SSH协议,Git协议和HTTP/S协议。
SSH协议是最为常用的一种,正式介绍SSH之前,简要说明一下其它协议。
本地协议(file://)
本地协议的优点就是简单,缺点是访问不便。
Git协议
这是一个包含在Git软件包中的特殊进程,它会监听一个提供类似于SSH服务的特定端口(9418),而无需任何授权。它的优点是它是传输速度最快的一个协议。缺点是正因为无授权,故这种协议没有写的权限,只有读的权限。另外这种协议是最难架设的协议,要求有单独的守护进程,需要定制。
HTTP/S协议
HTTP/S协议的优美之处在于假设简便,不需要占用过多的资源,另外HTTP是最常见的协议,大部分防火墙都会允许其通信。缺点是效率低,时间长。
SSH协议
SSH协议是最常见的一个协议,因为大部分环境都允许了SSH协议对服务器的访问,即使没有,架设这个协议也比较方便。另外,SSH协议也是唯一一个同时支持读写操作的网络协议。SSH的好处因此显而易见,假设简单,可读写,访问安全。缺点是不可进行匿名的访问。所以只有取得权限才能访问,没法利用此协议对公传输。
生成SSH公钥
关于SSH-key的文章,详情看github的这部分介绍
以下简单说明怎样实现SSH公钥的生成,导入以及访问。
-
生成:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
,把邮箱换成自己的邮箱 -
控制台中会提示是否需要附加口令,如果需要,直接输入两遍口令就可以生成公钥了(默认的公钥私钥的存放位置在~/.ssh目录)
-
进入~/.ssh目录,用文本编辑工具打开.pub格式的公钥,复制里面的内容到,在远程git仓库的设置里粘贴公钥即可将公钥导入到远程git仓库
-
验证公钥是否有效:
ssh -T git@github.com
。(coding.net的git地址是git@git.coding.net),如果有效,控制台中将会给出验证成功的信息。