一、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键接受。
在提示符处输入安全密码,确认安全密码,我使用了空密码,所以是两次回车。至此结束