我在使用ssh登录远程主机的时候经常要接触到公钥私钥这个概念,一直不明白
是怎么个回事。今天来做一个整理。
首先,要了解RSA加密算法。
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。(百度百科)
RSA是一种非对称的密码算法,也就是说有一把锁,需要用两把钥匙A,B来完成上锁和解锁。用A钥匙加锁后只能通过B钥匙打开。B钥匙加锁后也只能通过A钥匙打开。不能用同一把钥匙来解锁。
这样就非对称了。
为什么可以这样呢?
因为RSA算法基于一个简单的数论的事实。两个大质数相乘很容易,但是想要对其乘积进行因式分解却极其困难。
SSH远程登录主机的时候,客户机先发送给主机一个自己私钥加密的身份信息,然后主机收到后遍历自己保存的所有公钥挨个解密,如果解密得到的身份信息确认被认证过,则可以免密码登录了。