廖雪峰的Git学习笔记 - 3 - 远程仓库 - SSH配置 - (生成ssh密钥) (ssh-keygen -t rsa -C “邮箱“、ssh -T [email protected]


Github - 远程仓库


远程仓库?

就是把你的代码放上网。

放上网的代码就有两个问题,别人读你代码?别人写你代码?

别人读你代码
放在一些公共仓库内(如github,gitee),你的代码人随意让人读。
当然,你也能设置一些限制,在公共仓库弄也写私人空间。
而要完全私人的远程仓库,你需要自己搭建。

现实是,现在看这文章的你,你的代码没人有空来读。。
所以,别人读你代码,不是你现在关心的。

别人改你代码
如果你的代码放在了网上,别人能随便改(虽然你的代码依然没人有空来改),但这也是很令人头疼的,也是绝对不允许的。
所以,github为修改代码专门设置了一道认证门槛,rsa认证。

完成这个认证,你就能随意改你公共远程库的代码了。

完成这个认证,是这需要一些配置的


配置

  • 在继续阅读后续内容前,请自行注册GitHub账号
  • 由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置:

第1步:创建SSH Key。

在用户主目录下,看看有没有.ssh目录
cd ~/.ssh 看看成不成功)
在这里插入图片描述

  • 如果有,再看看这个目录下有没有id_rsaid_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。
  • 如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"

你需要把邮件地址换成你自己的邮件地址
然后一路回车,使用默认值即可,
(由于这个Key也不是用于军事目的,所以也无需设置密码。)

代码参数含义:

  • -t 指定密钥类型,默认是 rsa ,可以省略。
  • -C 设置注释文字,比如邮箱。
  • -f 指定密钥文件存储文件名。

以上代码省略了 -f 参数
因此,运行上面那条命令后会让你输入一个文件名
用于保存刚才生成的 SSH key 代码,如:
Generating public/private rsa key pair.
# Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press enter]


当然,你也可以不输入文件名,使用默认文件名(推荐),
那么就会生成 id_rsaid_rsa.pub两个秘钥文件。

  • 《 SSH-keygen用法 》https://www.cnblogs.com/yanglang/p/9563496.html

keygen - 注册机
”/“是根目录,”~“是家目录。

廖雪峰的Git学习笔记 - 3 - 远程仓库 - SSH配置 - (生成ssh密钥) (ssh-keygen -t rsa -C “邮箱“、ssh -T git@github.com)_第1张图片

如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件
廖雪峰的Git学习笔记 - 3 - 远程仓库 - SSH配置 - (生成ssh密钥) (ssh-keygen -t rsa -C “邮箱“、ssh -T git@github.com)_第2张图片

这两个就是SSH Key的秘钥对,

  • id_rsa是私钥,不能泄露出去,
  • id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:

然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容:
廖雪峰的Git学习笔记 - 3 - 远程仓库 - SSH配置 - (生成ssh密钥) (ssh-keygen -t rsa -C “邮箱“、ssh -T git@github.com)_第3张图片

点“Add Key”,你就应该看到已经添加的Key:
廖雪峰的Git学习笔记 - 3 - 远程仓库 - SSH配置 - (生成ssh密钥) (ssh-keygen -t rsa -C “邮箱“、ssh -T git@github.com)_第4张图片


第3步:连接成功?

在git Bash 中输入以下代码

$ ssh -T [email protected]

当你输入以上代码时,会有一段警告代码,如:

The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?

这是正常的,你输入 yes 回车既可。如果你创建 SSH key 的时候设置了密码,接下来就会提示你输入密码,如:

Enter passphrase for key '/c/Users/Administrator/.ssh/id_rsa':

当然如果你密码输错了,会再要求你输入,直到对了为止。

注意:输入密码时如果输错一个字就会不正确,使用删除键是无法更正的。

密码正确后你会看到下面这段话,如:

Hi username! You've successfully authenticated, but GitHub does not
# provide shell access.

如果用户名是正确的,你已经成功设置SSH密钥。如果你看到 “access denied” ,者表示拒绝访问,那么你就需要使用 https 去访问,而不是 SSH 。
廖雪峰的Git学习笔记 - 3 - 远程仓库 - SSH配置 - (生成ssh密钥) (ssh-keygen -t rsa -C “邮箱“、ssh -T git@github.com)_第5张图片


为什么GitHub需要SSH Key呢?

因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的

而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。


最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。
所以,不要把敏感信息放进去。


如果你不想让别人看到Git库,有两个办法,

  • 一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。
  • 另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。
    (这个方法我们后面会讲到的,相当简单,公司内部开发必备。)

确保你拥有一个GitHub账号后,我们就即将开始远程仓库的学习。

你可能感兴趣的:(版本控制,-,Git,-,❤️)