1.介绍ssh建立原理
①客户端通过TCP三次握手与服务器的SSH端口建立TCP连接。
②密钥和算法协商阶段:
a.服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表,加密算法列表等
b.服务器端和客户端根据自己和对端支持的算法来决定最终要使用的各个算法
c.服务器端和客户端利用密钥交换算法,主机密钥等参数生成共享密钥和会话ID。会话密钥对两端传输的数据进行加密,会话ID用于认证过程。
③认证阶段:
a.客户端向服务端发送认证请求(包含用户名,认证方法,密钥)
b.服务端对客户端进行认证,如果认证失败,则发送认证失败消息
c.客户端再次使用支持的认证方法中的一种进行认证,直到到达认证次数上限被服务器终止连接
SSH支持的两种认证方式:将使用会话密钥加密后的用户名和密码发送给服务器,服务器解密
密码认证:客户端通过用户名/密码进行认证,后与系统保存的用户名和密码进行对比,并向客户端
返回认证成功或失败的消息。
密钥认证:采用数字签名来进行认证
④会话请求阶段:
a.服务器等待客户端请求
b.认证完成后,客户端向服务器发送会话请求
c.服务器处理客户端请求,完成后,会向客户端回复报文,双方进行交互会话阶段
⑤交互会话阶段:
a.客户端将要执行的命令加密发送给服务器
b.服务器收到后,解密命令,执行后将结果加密返回客户端
c.客户端将返回接轨解密后显示终端上
2.开启两台主机能够实现两台主机互相远程连接实现免密登录(基于密钥登录)
创建密钥对
[root@web ~]# ssh-keygen -t rsa
ssh-keygen - 生成、管理和转换认证密钥 -t制定类型 RSA
/root/.ssh/id_rsa私钥文件
/root/.ssh/id_rsa.pub公钥文件
#复制该公钥文件到服务端的该目录下:
[root@web ~]# scp /root/.ssh/id_rsa.pub root@192.168.40.132:/root/.ssh/authorized_keys
#在本地服务器上登陆对端服务器
[root@web ~]# ssh 192.168.40.132
登录时可以使用如下命令(172.24.8.128为ssh服务端):
[root@client ~]# ssh -i /root/.ssh/id_rsa root@172.24.8.128