SSH无密码登陆
1 什么是SSH
- SSH全称Secure SHell,用来取代传统的telnet和R系列命令(rlogin,rsh,rexec等)程登陆和远程执行命令的工具。
- SSH是一种加密协议,不仅在登陆过程中对密码进行加密传送,而且对登陆后执的命令的数据也进行加密,即使别人在网络上监听并截获了你的数据包,并看不到其中的内容。
- SSH服务都是由软件OpenSSH来提供的。绝大多数linux安装包已自带。
- OpenSSH已经是大多数linux操作系统的标准组件,不需要二次安装。
2 工作原理
- 安全验证机制-登陆
- 密码登陆(帐户口令登陆方式)
- 密钥登陆(公钥私钥非对称登陆方式)
- 密码登陆
- 定义
客户端发出授权请求时,服务端要求输入密码进行验证授权
- 工作原理
- 客户端向ssh服务器发出请求,服务器将自己的公钥返回给客户端;
- 客户端用服务器的公钥加密自己的登录密码,再将信息发送给服务器;
- 服务器接收到客户端传送的密码,用自己的私钥解码。
正确性判断: 如果结果正确,则同意登录,建立起连接,否则拒绝
- 运行流程
- 演示示例
- 假设:
客户端A为centos实例172.168.0.3
服务器端B为centos实例172.168.0.4
- 从客户A端发起链接服务B,接受服务端B端返回公钥的加密值
- 输入密码验证身份
- 潜在问题
有漏洞,中间人可以假扮成服务器,骗取客户端的密码。
- 密钥登陆
- 定义
客户端发出授权请求时,服务端根据事先配置的密钥验证身份并授权
- 工作原理
- client-server打通-公钥传递
1、客户端生成密钥对,包括公钥、私钥
2、私钥配置在本地,将公钥发送给服务端
3、服务端将客户端的公钥加入到授权列表
- client登陆server
1、当客户端请求登陆服务器端时,服务器端验证客户端的公钥是否存在,并
用公钥加密随机字符串RS生成RE,发送给客户端,进行验证。
2、客户端用私钥解密RE后结果RD,将结果返回给服务器端。
3、服务器端将RD与之前随机生成的RS比对,匹配则授权,否则拒绝。
- 运行流程
- 假设:
客户端A为centos实例172.168.0.3
服务器端B为centos实例172.168.0.4
- client-server打通-公钥传递
- 客户端生成公钥生和私钥对
- 将公钥以安全的方式传递到服务器端
服务端将客户端的公钥加入到授权列表
- client登陆server
1、客户端发出远程登录请求 用户名@服务端主机名或者IP
2、服务端查看是否有 该用户名 的公钥
3、如果有,服务端生成随机字符串,并用公钥加密(就是随机字符
串与公钥作某种运算),发送给客户端
4、客户端利用本地的私钥对字符串解密(逆运算)。
5、客户端将解密后的字符串结果发送给服务端
6、服务端利用解密的字符串与原始字符串匹配,如果相等,验证通
过,并授权给客户端。