SSH原理与应用

小课堂

分享人:尤炳晓

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

背景介绍

最早的时候,互联网通信都是明文通信。一旦被截获,内容就暴露无疑。1995年芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广。目前已经成为Linux系统的标准配置。

2.知识剖析

SSH的通信原理:密码登录。
过程:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密之后,发送回来。(3)远程主机用自己的私钥解密登录密码,如果密码正确,就同意用户登录。这个过程是安全的。
对称加密:最简单、快速的一种加密方式。加密与解密使用同一个密钥,
非对称加密:最安全,但是慢。公钥可以发送给任何请求人,私钥只有自己保存。公钥用来加密信息,私钥用来解密信息。
解决办法:使用对称加密传输信息,但对称加密所使用的密钥通过非对称加密的方式发送出去。

2.知识剖析

SSH的通信原理:公钥登录。
使用密码登录每次都得输入密码,非常麻烦。还好SSH提供了公钥登录。
过程:(1)用户将自己的公钥存储在远程主机上。(2)登录时,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。(3)远程主机用公钥进行解密,如果成功,证明用户可信,不再要求密码。

3.常见问题

中间人攻击
采用公钥加密的方式本身存在一个风险:如果有人截获了登陆请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨认其真伪。因为不像https协议,SSH协议的公钥是没有证书中心公证的。也就是说公钥都是自己签发的。
可以设想,如果攻击者插在用户和远程主机之间,用伪造的公钥,是可以获取用户登陆密码的。这就使得SSH的安全保障消失。
这就是传说中的中间人攻击。

4.解决方案

SSH解决中间人攻击的办法:口令登录
在第一次登陆远程主机的时候,系统会提示你一个FingerPrint信息,并询问你是否继续连接这个远程主机。这是因为我的主机无法识别远程主机的真实性(因为有可能是中间人攻击者),只知道他的公钥指纹。用户需要自己去这个远程主机所在的网站或者远程主机的使用者那里确认公钥指纹是否正确。正确就说明这个公钥信息是远程主机发过来的,可以信任。当远程主机被接受之后,这个远程主机的公钥就会被保存在本地,下次登陆这个远程主机时,系统会认出它的公钥已经保存在本地,从而跳过警告部分,直接提示输入密码。
注:公钥指纹:因为公钥太长(1024位),用户很难对比,所以采用一种算法,生成一个只有128位的指纹,方便用户进行比较。

5.编码实战

登陆远程服务器: 连接远程主机:
ssh 用户名@远程服务器地址
使用22端口连接远程主机
ssh -p 22 用户名@远程服务器地址
断开连接:
logout

6.扩展

如何从网上下载文件到Linux服务器?

7.参考文献

http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 阮一峰博客
https://www.cnblogs.com/scofi/p/6617394.html
博客园博客

8.更多讨论

大家有什么问题吗?

Thanks

By : byou