SSH登录的两种方式
一 : 密码登录
1.客户端向SSH服务器发出请求,服务器将自己的公钥返回给客户端。
2.客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器。
3.服务器接收到客户端传统的密码,用自己的私钥解码。如果结果正确,则同意登录,建立起连接,否则拒绝。
演示流程 :
客户端A为centos实例172.168.0.3,服务器端B为centos实例172.168.0.4
从客户端A发起链接服务B,接收端服务器端B返回公钥的加密值。
输入密码验证身份
这种方式有潜在问题,有漏洞,中间人可以假扮成服务器,骗取客户端的密码。
二.密钥登录
A、 Client-Server打通公钥传递
客户端生成秘钥对,包括公钥、私钥
私钥配置在本地,将公钥发送给服务端
服务端将客户端的公钥加入到授权列表
B、 Client登陆server
当客户端请求登陆服务端时,服务器验证客户端的公钥是否存在, 并用公钥加密随机字符串RS生成RE,发送给客户端,进行验证。
客户端用私钥解密RE后生成结果RD,将结果返回给服务器端。
服务器端将RD与之前随机生成的RS比对匹配则授权,否则拒绝。
运行流程 :
客户端A为centos实例172.168.0.3;服务端B为centos实例172.168.0.4。
1.先将client-server打通-公钥传递
①客户端生成公钥私钥对
②将公钥以安全的方式传递到服务器端
③服务端将客户端的公钥加入到授权列表
2.Client登录Server
a) 客户端发出远程登录请求:ssh 用户名@服务器主机名或者IP
b) 服务端查看是否有该客户端的公钥,如果有服务端生成随机字符串,并用公钥加密(就是随机字符串与公钥作某种运算),发送给客户端。
c) 客户端使用本地的私钥对字符串解密(逆运算)。
d) 客户端将解密后的字符串结果发送给服务端。
e) 服务端将解密的字符串与原始字符串匹配,如果相等则验证通过,并授权客户端可以登陆。