SSH的原理是使用了RSA算法(利用了因式分解时间上的不对称性),RSA能生成公钥和对应的私钥,这两种密钥地位相同,只从一方无法推断出另一方,并且一方加密的内容只能由另一方来界面。SSH连接有两种情形,一种需要密码,一种不需要密码。下面依次进行分析:
1)需要密码
①Client请求Server,Server将他的公钥返回给Client
②Client将公钥加密密码,并且发给Sever,Sever使用私钥后解出密码,于是Client和Server拥有共同约定的密码
③Client使用密码加密数据内容,发给Server,Server使用已知的密码,来解出里面的内容
2)免密码
①Client生成自己的公钥和私钥,并且将公钥发给Server
②Client请求Server,Server使用Client的公钥加密一个"质询",发给Client
③Client使用私钥解出"质询",并发给Server,Server对照原先的内容,如果一致的话,就认为Client是值得信任的,允许Client直接免密码连接Server