SSH加密的工作原理

来源:互联网 发布:人工智能编程语言介绍 编辑:程序博客网 时间:2024/04/30 14:51

SSH加密的工作原理

      从本科一直到现在研究生,自己摸索的后台技术方面东西就不多。但是一直存在对后台技术的热爱,近来,利用自己的学生身份,购买了阿里云服务器,借此来小小的打磨一下自己的技术。虽然目标是算法岗,但后台技术多少都是需要有的。这篇文章就是主要来说明自己在用阿里云遇到的第一个问题。

  • 问题提出
          服务器安装了Linux的CentOS系统,当然需要远程连接才好用了。这就涉及到一个登录的问题。传统的密码登录存在很大的风险,最严重的隐患就是,一个系统用一对账号密码登录,密码易泄漏。当然还有一些其他问题,比如在信息被截获了就密码就整个就变裸体了。于是乎,SSH的出现就一定程度上解决了这个问题。(当然还是有安全问题,因为绝对安全的通信是不存在的。)

  • 工作思路
          举个例子。首先用户和服务器都拥有一个公钥和私钥。用户想要登录这个服务器,必须事先把自己的公钥存入服务器中。(比如Github或阿里云需要上传密钥对,就是指上传公钥。)
          第一阶段:连接。用户向服务器发请求,服务器把自己的公钥发给用户,用户端把密码用服务器发送来的公钥将密码加密,然后发送至服务器,服务器用私钥解密,获得密码,即连接成功。
          第二阶段:认证。服务器生成随机数,使用用户端预先存储在服务器中的公钥进行加密,发送给用户。用户收到后使用私钥进行解密,接着使用上一段中的方法,发送给服务器进行验证,两者匹配则认证成功。

  • 总结
          以OpenSSH来说(Linux自带的SSH实现),用户需要做的就是把自己的公钥上传(这时候服务器端会将其存放在authorized_keys文件中),然后就可以使用ssh命令进行连接。第一次连接时,会提示安全确认,如果你输入yes确认安全,服务器发送来的公钥存储将会被存在known_hosts文件中,然后输入密码即登录成功。
          注意,可以看到第一次登录时需要输入密码,成功登陆后,服务器端和用户端都存储了对方的公钥信息,并且列为安全对象。接下里使用同一台机器登录同一个服务器时,就不需要输入密码,仅仅需要执行工作原理中的第二阶段认证即可成功登录。

      学习一些技术上的东西,一味的按照网上教程来做,不仅容易出错,而且就算成功了,下次还是不知道为什么,还需要查。所以最好的方法就是弄懂原理,才可以说自己懂某个技术。下一次使用,就算忘了,有了之前理解的基础,也会很快搞明白。

原创粉丝点击