应用层协议2------SSH

如果你跟我一样属于服务器开发人员,那么对SSH协议肯定不会陌生,上篇文章写到了HTTPS中的SSL,是为了点对多的互联网系统构造而生的,那么,问题来了,当你访问自己的服务器时,你是怎么做的呢?

使用证书?

太贵了,虽然现在有免费证书,难道你还不嫌证书安装麻烦吗?

裸连?

服务器的安全我想不必多说了吧,如果你在外面连接了黑客搭建的公开WiFi,他把你的账号密码截取到了,我只能安慰你一句:everything will be ok.

芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。

和HTTPS基本一样

还记得https是怎么保证信息传输的安全性吗?

1.小白把公钥告诉小明
2.小明用自己的公钥加密信件
3.小明用小白的公钥加密自己的公钥
4.小白用私钥解密出小明的公钥
5.小白用小明的公钥解密信件

把小白替换为服务器,把小明替换成服务器操作人员(你)
这时候存在一个问题,你不知道服务器给你发送的公钥是不是真的,因为没有证书去保证公钥的合法性

解决证书问题

初次ssh登录服务器

如果经常和服务器打交道,大家肯定不会对这张图片陌生,简单翻译一下:
无法验证服务器的合法性,它的公钥指纹是98:2e........(可以在服务器提供商那验证,类似于下载东西的时候md5),你确定要继续链接吗?

当技术人员确认了这个公钥的合法性,就可以登陆啦

当远程主机的公钥被接受以后,它就会被保存在文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。
如果下次你再链接相同的服务器(被仿造的服务器)系统就会提示错误

每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。

你可能感兴趣的:(应用层协议2------SSH)