SSH协议概述

一、SSH为何物

        SSH 为 Secure Shell(安全外壳协议) 的缩写,由 IETF 的网络小组(Network Working Group)所制定。SSH 是建立在应用层基础上的安全协议。是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。

二、SSH的功能

        像ftp、telnet这种用明文在网络上传送口令和数据,在本质上都是不安全的,很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式, 就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

三、基于密钥的验证原理

        创建一对密匙,并把公用密匙放在需要访问的服务器上。以Github为例,它支持的SSH密钥加密算法有:ssh-ed25519', 'ssh-rsa', 'ssh-dss', 'ecdsa-sha等。

        如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

        在确保你私钥没有泄露的前提下,使用SSH传送的数据是安全的。因为“中间人”并没有你的私钥。

四、如何生成密钥对

        你可以点击上面的蓝色字体进入github的官方文档查看,或者 继续往下看(๑´ㅂ`๑)

        setup1:在生成SSH密钥之前,检查本地是否有任何现有的SSH密钥(如果确定没有,直接跳到setp2)

        打开git bash或支持SSH的工具输入以下命令

ls -al ~/.ssh

         默认情况下,如果已存在,那么公钥的文件名是以下之一

            1、id_dsa.pub

            2、id_ecdsa.pub

            3、id_ed25519.pub

            4、id_rsa.pub

         我使用的是RSA,所以在列表中出现了id_rsa.pub文件(默认路径是C:\Users\你的计算机名\.ssh)  如果你没办法找到,可以使用Everything去搜索这个文件,这是一款windows平台下能快速定位文件的工具,我非常喜欢。

  使用记事本或任意文本编辑器打开它,复制这个文件下所有的内容,从ssh-rsa开始,到末尾的邮箱,这就是你的公钥。

        setup2:粘贴下面的文本,替换你的电子邮件地址,这将创建一个使用提供的电子邮件作为标签的ssh密钥。

ssh-keygen -t rsa -b 4096 -C"[email protected]"
        之后会提示保存密钥的默认路径C:\Users\你的计算机名\.ssh\id_rsa, enter键接受。
在提示符处输入安全密码,确认安全密码,我使用了空密码,所以是两次回车。至此结束

猜你喜欢

转载自blog.csdn.net/csdn_Binj/article/details/80382365
今日推荐