大家好,我是IT修真院北京分院第30期的学员Mastr_Yoda,一枚正直纯洁善良的Java程序员。
今天给大家分享一下,修真院官网Java(职业)任务3,深度思考中的知识点——什么是ssh?如何在linux服务器上从网站下载文件?。
1、背景介绍
最早的时候,互联网通信都是明文通信。一旦被截获,内容就暴露无疑。1995年芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广。目前已经成为Linux系统的标准配置。
2、知识剖析
SSH的通信原理:密码登录
过程:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密之后,发送回来。(3)远程主机用自己的私钥解密登录密码,如果密码正确,就同意用户登录。这个过程是安全的。
对称加密:最简单、快速的一种加密方式。加密与解密使用同一个密钥。
非对称加密:最安全,但是慢。公钥可以发送给任何请求人,私钥只有自己保存。公钥用来加密信息,私钥用来解密信息。
解决办法:使用对称加密传输信息,但对称加密所使用的密钥通过非对称加密的方式发送出去。
SSH的通信原理:公钥登录。
使用密码登录每次都得输入密码,非常麻烦。还好SSH提供了公钥登录。
过程:(1)用户将自己的公钥存储在远程主机上。(2)登录时,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。(3)远程主机用公钥进行解密,如果成功,证明用户可信,不再要求密码。
3、常见问题:中间人攻击
采用公钥加密的方式本身存在一个风险:如果有人截获了登陆请求,然后冒充远程主机,将伪造的公钥发给用户,那么用户很难辨认其真伪。因为不像https协议,SSH协议的公钥是没有证书中心公证的。也就是说公钥都是自己签发的。
可以设想,如果攻击者插在用户和远程主机之间,用伪造的公钥,是可以获取用户登陆密码的。这就使得SSH的安全保障消失。
这就是传说中的中间人攻击。
4、解决方案:口令登录
在第一次登陆远程主机的时候,系统会提示你一个FingerPrint信息,并询问你是否继续连接这个远程主机。这是因为我的主机无法识别远程主机的真实性(因为有可能是中间人攻击者),只知道他的公钥指纹。用户需要自己去这个远程主机所在的网站或者远程主机的使用者那里确认公钥指纹是否正确。正确就说明这个公钥信息是远程主机发过来的,可以信任。当远程主机被接受之后,这个远程主机的公钥就会被保存在本地,下次登陆这个远程主机时,系统会认出它的公钥已经保存在本地,从而跳过警告部分,直接提示输入密码。
注:公钥指纹:因为公钥太长(1024位),用户很难对比,所以采用一种算法,生成一个只有128位的指纹,方便用户进行比较。
5、编码实战
登陆远程服务器:
ssh 用户名@远程服务器地址
使用22端口连接远程主机
ssh -p 22 用户名@远程服务器地址
断开连接:
logout
6、扩展
如何从网上下载文件到Linux服务器?
wget 网络资源URL
7、参考文献
http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 阮一峰博客
https://www.cnblogs.com/scofi/p/6617394.html
博客园博客
8、更多讨论
提问1:SSH只是用来连接登陆远程服务器的吗?
回答1:SSH是一种网络协议,用于计算机之间的加密登陆。我的理解是,当我们登陆之后(确认双方身份之后),传输信息就需要别的方式确保信息安全了。
提问2:介绍一下安全密钥的算法。
回答2:RSA与DSA都是非对称加密算法。其中RSA的安全性是基于极其困难的大整数的分解(两个素数的乘积);DSA的安全性是基于证书的有限域离散对数难题。基本上可以认为相同密钥长度的RSA算法与DSA算法安全性相当。
有点要注意,RSA 的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解 RSA 就一定需要作大数分解。不过也不必太过担心,RSA 从诞生以来,经历了各种攻击,至今未被完全攻破(依靠暴力破解,小于1024位密钥长度的 RSA 有被攻破的记录,但未从算法上被攻破)。
当然除了这两种加密算法,还有别的算法,这里就不列举了,有兴趣可以专门研究一下。
提问3:SSH的应用范围。
回答3:SSH适用于多种平台,几乎所有的UNIX平台——包括Linux、MacOS等,都可以直接使用SSH。Windows平台使用SSH的话,需要先安装软件,比如openssh for Windows 和 PuTTY等。
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
修真院注册邀请码:http://www.jnshu.com/login/1/12954171
网友评论