博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 ssh 连接 Github 代码库超详细教程
阅读量:4117 次
发布时间:2019-05-25

本文共 1887 字,大约阅读时间需要 6 分钟。

640?wx_fmt=jpeg
来源 | https://www.lazycoffee.com/articles/view?id=5c8e6037c05ac041f1c24581
这段时间一直没办法克隆github的库,只能使用https,但要每次操作要输入密码,相当的麻烦。 为了找出问题,只能从头开始研究如何用ssh来clone github 的库,过程并不复杂,知道ssh原理的老司机更容易理解。
ssh数据传输
非对称加密数据传输是ssh交换数据的唯一方法,这种方式必须用到公钥和私钥,所以要使用ssh来连接github库(同理所有git库),就需要向github提交公钥(为啥不是私钥? 因为只有私钥才能解开公钥加密的内容,反之公钥却不可以解私钥的内容)。

一、检查是否已有公/私密钥

如果你的电脑已经有公钥和私钥了,那就不用再生成,可以跳过第二步。 公钥和密钥一般在
~/.ssh/ 下,输入以下命令即可确认是否存在(windows需要安装git工具库后使用git bash来运行,接下来都是):
 
如果有下面这两个文件: id_rsa(私), id_rsa.pub(公),就表示已存在公/私密钥了:
-rw-------   1 user  group  1843 Feb 24 17:49 id_rsa	-rw-r--r--   1 user  group   413 Feb 24 17:49 id_rsa.pub

二、生成公/私密钥

经过上面的检查发现没有公私密钥,那就需要自已手动去生成一对。 方法是使用ssh命令行工具(windows需要git bash,接下来都是),执行命令:
 
其间会要求你输入以下内容:
1、输入公钥私钥保存的文件路径,回车默认
~/.ssh/ ,一般直接回车即可。
 
2、输入私钥的密码(使用私钥密码可以大幅提升安全系数,但每次使用ssh连接都必须输入该密码,会有点麻烦,对于全要求不是非常高的用户不必使用)
 
3、再输入一次私钥的密码,如果你之前没输入,这里直接回车即可
 
现在你可以重复第一步检查是否生成成功。
更安全的算法(可选)
如果ssh-keygen默认的rsa算法生成的钥匙不能满足你对安全性的要求,你可以使用
-b 4096 参数(github推荐)提高钥匙位数,增加复杂度,也可以使用更高级别的算法,例如ecdsa、ed25519,前提是git服务器也同时支持这些算法,否则会连接失败。
使用rsa算法,4096位:
 
使用ed25519算法:
 
更多内容请参考: https://www.ssh.com/ssh/keygen/

三、配置ssh默认密钥

如果以上你都是默认配置,这一步可以直接跳过,否则需要手动配置ssh连接时指定的密钥。
1、在
~/.ssh/config 输入以下内容:
Host *	  AddKeysToAgent yes	  UseKeychain yes	  IdentityFile ~/.ssh/id_rsa
2、把私钥添加到ssh客户端中。 如果你不是使用默认的密钥名称,则把下面命命的
id_rsa 替换成你的密钥名。
 
如果使用的是苹果电脑,可以使用
-k 参数,同时添加私钥的密码。
 

四、在github中添加公钥

github像大多数git服务一样,都是能添加多个公钥,以便在多台电脑上使用ssh连接,所以你可以重复下面操作,添加多个电脑的公钥。
1、拷贝公钥
使用命令
pbcopy < ~/.ssh/id_rsa.pub 或者文本查看器(vi、vim、nano等)拷贝。
2、在github网站右上角,打开用户设置:

640?wx_fmt=png

3、点击左则ssh pgk设置:

640?wx_fmt=png

4、点击右上角,添加公钥:

640?wx_fmt=png

5、在Title里输入公钥的备注,例如:home computer
6、在key里粘贴公钥的内容:

640?wx_fmt=png

7、点击Add SSH key

640?wx_fmt=png

8、有可能弹出密码输入框,输入你的github密码即可:

640?wx_fmt=png

拷贝git库

现在你应该可以通过ssh直连github库了,使用以下命令即可把git库下载到当前目录:
 

其它问题

如果出现:
ssh_exchange_identification: Connection closed by remote host  错误,有可能是:
1、git的版本太旧了,更新一下即可。
2、dns被污染了,在hosts里绑定以下ip即可:
 

旁通

大多数的git服务商都提供ssh连接服务,例如gitlab、coding、gerrit等等,其原理都是一样,操作大同小异,大家可以阅读ssh和git更多内容,更深入去把玩。
640?wx_fmt=jpeg
640?wx_fmt=jpeg

转载地址:http://tufpi.baihongyu.com/

你可能感兴趣的文章
C 语言学习 --设置文本框内容及进制转换
查看>>
C 语言 学习---判断文本框取得的数是否是整数
查看>>
C 语言 学习---ComboBox相关、简单计算器
查看>>
C 语言 学习---ComboBox相关、简易“假”管理系统
查看>>
C 语言 学习---回调、时间定时更新程序
查看>>
C 语言 学习---复选框及列表框的使用
查看>>
第四章 - 程序计数器
查看>>
第七章 - 本地方法栈
查看>>
第十一章 - 直接内存
查看>>
JDBC核心技术 - 上篇
查看>>
JDBC核心技术 - 下篇
查看>>
一篇搞懂Java反射机制
查看>>
【2021-MOOC-浙江大学-陈越、何钦铭-数据结构】树
查看>>
MySQL主从复制不一致的原因以及解决方法
查看>>
RedisTemplate的key默认序列化器问题
查看>>
序列化与自定义序列化
查看>>
ThreadLocal
查看>>
从Executor接口设计看设计模式之最少知识法则
查看>>
OKhttp之Call接口
查看>>
application/x-www-form-urlencoded、multipart/form-data、text/plain
查看>>