Github配置 SSH Key步骤
一、HTTPS和SSH的区别
1、HTTPS的定义
HTTPS是一种网络通信协议,全称为“Hyper Text Transfer Protocol Secure”,即“安全的超文本传输协议”。它基于HTTP协议,通过SSL/TLS等安全协议实现的加密和身份验证,保障了数据传输过程的安全性。
以HTTP为例,当客户端向服务器发送请求时,整个请求报文以明文的形式进行传输,其中包含了用户登录、密码等敏感信息。如果黑客在中间环节截获了这些明文信息,用户的隐私就会暴露。而HTTPS协议则通过对传输的数据进行加密和身份验证,确保数据传输的完整性和保密性。它通过在传输层(TLS/SSL协议)和应用层(HTTP协议)都进行加密来保证数据的安全。
具体来说,HTTPS协议一般使用RSA公钥加密技术和AES对称加密技术。客户端和服务器在首次握手时,服务器会发送自己的公钥给客户端,客户端用公钥加密后将会发送给服务器进行验证,验证通过后便生成一个会话密钥,再用该密钥加密后发送给服务器,服务器知道会话密钥后再进行解密。
HTTPS的主要优点在于它提供了极高的安全性,能够抵御大多数中间人攻击和窃取用户信息的行为。然而,HTTPS也存在一些缺陷,如服务器证书被黑客劫持的问题,并且在加密过程中也增加了一定的网络负担
2、SSH的定义
SSH是一种安全网络协议,其全称为“Secure Shell”。SSH在不安全的网络上为网络服务提供了安全的通信链路。它可以将远程主机上的命令行界面和本地交互式工具进行连接,以便于用户通过安全加密的通信链路在远程主机上执行命令或管理远程主机的内容。
SSH协议使用的是公钥加密技术。在SSH连接中,用户一般会生成一对公钥私钥,将公钥文件放置于远程主机上,私钥则用于进行身份验证。当用户访问远程主机时,远程主机会将其公钥发送给客户机,客户机用该公钥加密自己的身份信息,并传输给远程主机。远程主机用私钥解密后便可确保通信的安全性。
SSH的主要优点在于安全性强、灵活性高、支持远程命令执行和文件传输等功能丰富,常被用于系统管理、软件开发、数据中心等领域。它比其他远程管理协议如Telnet更加安全,避免了在网络中传递明文密码的风险。
3、两者的区别
(1)用途不同
HTTPS协议一般用于Web浏览器和Web服务器的通信,而SSH主要用于安全地访问、管理远程计算机和服务器、传递文件等等。
(2)实现方式不同
HTTPS采用的是HTTP协议和SSL/TLS等安全协议的结合,即在传输层(TLS/SSL协议)和应用层(HTTP协议)都进行加密,而SSH则是一种端到端的加密协议,不依赖其他传输协议
(3)加密算法不同
HTTPS协议一般使用RSA公钥加密技术和AES对称加密技术,而SSH协议使用的则是比RSA更为安全的DSS等加密算法。
(4)安全级别不同
虽然HTTPS和SSH协议都是安全性较高的协议,但是SSH比HTTPS更安全,这是因为SSH的密钥交换是完全端对端的加密,避免了中间人攻击的风险,而HTTPS则存在一定的中间人攻击风险。
二、配置SSH密钥背景
通过 SSH 协议进行与 GitHub 的交互,可以提供更方便的身份验证和更快速的推送与拉取操作。它使用密钥进行身份验证,而不需要在每次操作时提供用户名和密码或访问令牌
其实选择使用 HTTPS 还是 SSH 取决于个人偏好和特定的使用场景
- HTTPS 使用起来更简单,不需要额外的设置,适合一般的个人使用或者不频繁的操作
- SSH 需要设置密钥,但可以提供更方便的身份验证和更快速的推送与拉取操作,适合频繁与远程仓库交互的开发者或团队
我们这里选择使用SSH。
三、配置步骤
在github账号下配置ssh key的步骤:
- 使用秘钥生成工具生成rsa秘钥和公钥
- 将rsa公钥添加到代码托管平台
- 将rsa秘钥添加到ssh-agent中,为ssh client指定使用的秘钥文件
这里以在 Github 配置 SSH keys 为例
1、 检查是否已经有 SSH-Key
右键打开Git bash,进入 ~/.ssh 目录,通过 ls 命令看看当前电脑上存不存在 SSH-Key 的相关文件,如果显示 id_rsa 和 id_rsa.pub 文件,说明已经有SSH Key了;如果没有,那么根据步骤2生成一个
$ cd ~/.ssh
$ ls
2、 生成一个SSH-Key
如果不存在ssh key,使用如下命令生成,执行后一直回车即可,生成完以后再用第一步命令,查看ssh key
ssh-keygen -t rsa -C "xxx@xxx.com"
3、获取ssh key公钥内容
如下图所示,直接复制内容
cd ~/.ssh
cat id_rsa.pub
4、Github账号上添加公钥
在 Github 个人的设置页,点击 “New SSH Key” ,取个名字,把上一步获取到的 SSH Key 拷贝进去
5、验证是否设置成功
设置成功后,即可不需要账号密码clone和push代码
ssh -T git@github.com
若出现上图中连接失败的情况,即新生成密钥,git clone或者push的时候,经常会报这样的错误,这是因为少了一个known_hosts文件,本来密钥文件应该是三个,现在是两个,便报了这样的错误,此时选择yes回车之后,便可,同时生成了缺少了的known_hosts文件
Are you sure you want to continue connecting (yes/no/[fingerprint])? //输入yes,再回车
注意:之后在clone仓库的时候要使用ssh的url,而不是https
更多推荐
所有评论(0)