1.SSH是一种网络协议,用于加密两台计算机之间的通信 ; SSH的架构是服务器-客户端模式,使用的是非对称加密
非对称加密:非对称加密有两个秘钥,“公钥”和“私钥”
两个秘钥的特性:公钥加密后的秘闻,只能通过对应的私钥进行解密;而通过公钥推理出私钥的可能性微乎其微。私钥是Server端独有。
2.SSH整个过程
1)远程Server收到用户的登录请求,把自己的公钥发给用户
2)用户使用这个公钥,将登录密码加密后,发送回来
3)远程Server用自己的私钥,解密登录密码,如果密码正确,就同意用户登录
3.中间人攻击
如果有一个攻击者中途拦截用户的登录请求,向其发送自己的公钥,用户用攻击者的公钥进行数据加密。攻击者接受到加密信息后再用自己的私钥进行解密从而窃取用户信息,这就是中间人攻击
4.SSH解决中间人攻击
1)口令认证
用户会对自己的公钥进行确认,如果是第一次登录对方主机,会出现提示信息,按要求输入密码后就可以登录了
2)公钥认证(SSH提供的免去输入密码的登录方式)
A.用户将自己的公钥放在远程Server上,追加在文件authorized_keys中
B.Server端接收到用户的连接请求后,会在authorized_keys中匹配用户的公钥,并生成随机数R,用用户的公钥对该随机数进行加密得到pubKey(R),将加密后的信息发送给用户。
C.用户通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端
D.Server端会对R和SessionKey利用同样的摘要算法生成Digest2
E.Server端会最后比较Digest1和Digest2是否相同,完成认证过程
5.SSH文件
1)id_rsa:保存私钥
2)id_rsa.pub:保存公钥
3)authorized_keys:保存已授权的客户端公钥
4)known_hosts:保存已认证的远程主机host key
他们四个的关系如下(一台主机可能既是用户也是Server,所以会同时拥有authorized_keys和known_hosts)
6.SSH端口转发:本地转发、远程转发、动态转发