使用 ssh 连接 Github 代码库超详细教程

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
SSH连接GitHub的步骤如下: 1. 首先,确认你还没有设置SSH。打开终端,输入cd ~./ssh(默认目录)或者其它你设置过的ssh目录位置并回车。如果终端返回No such file or directory,那说明你应该新设置一个SSH。 2. 生成SSH密钥。在终端输入ssh-keygen -t rsa并回车。按两次回车,第一次选择SSH密钥的存储位置,默认位置是/home/\[用户名\]/.ssh/id_rsa;第二次回车时选择passphrase,可以选择留空或者设置一个密码。 3. 确认生成SSH密钥。在终端内重新输入步骤1的指令cd ~/.ssh和ls,确认SSH密钥文件已被生成。 4. 复制SSH密钥。在终端输入cat id_rsa.pub获取SSH公共密钥内容,复制ssh-rsa ... @mail.ericfrenzy.fun。 5. 在GitHub上添加SSH密钥。在设置页面找到SSH and GPG keys,点击New SSH key。在Title处填写一个你能认出的名字,将刚才复制的SSH公共密钥粘贴到下方的文字框内,点击Add SSH key。 6. 测试连接。在终端输入ssh -T git@github.com并回车。输入yes确认连接。如果出现Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.,说明SSH密钥配置成功。 请注意,在使用git clone等命令时,要使用SSH的URL而不是HTTPS的。 以上是连接GitHubSSH步骤。\[2\] #### 引用[.reference_title] - *1* [使用 ssh 连接 Github 代码库超详细教程](https://blog.csdn.net/snsHL9db69ccu1aIKl9r/article/details/101803787)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [在本地配置SSH连接GitHub以及其它服务器(详细图文教程)](https://blog.csdn.net/EricFrenzy/article/details/126904024)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值