SSH(Secure Shell)是一种网络协议,用于在不安全的网络中为网络服务提供安全的远程登录和其他安全网络服务。
SSH 通过使用加密技术来保护客户端和服务器之间的连接和通信,防止数据在传输过程中被窃取、篡改或监听。它不仅可以用于远程登录到服务器执行命令,还可以用于安全地传输文件(如 SCP、SFTP 等)、端口转发等操作。
其提供了强大的身份验证机制,如基于密码的身份验证和基于密钥对的身份验证,增强了系统的安全性。
SSH(Secure Shell)的工作流程大致如下:
-
客户端发起连接请求:客户端向服务器发送连接请求,请求建立 SSH 会话。
-
服务器发送公钥:服务器收到请求后,将自己的公钥发送给客户端。
-
客户端验证服务器公钥:客户端接收到服务器的公钥后,会检查该公钥是否可信(通常是通过事先获取或信任的证书颁发机构验证,或者与已知的可信公钥进行比对)。
-
客户端生成会话密钥:客户端生成一个会话密钥,用于后续的加密通信。
-
客户端使用服务器公钥加密会话密钥:客户端使用从服务器获取到的公钥对生成的会话密钥进行加密,并将其发送给服务器。
-
服务器使用私钥解密:服务器使用自己的私钥对收到的加密会话密钥进行解密,得到会话密钥。
-
双方使用会话密钥进行加密通信:此后,客户端和服务器都使用这个会话密钥对在 SSH 连接中传输的数据进行加密和解密,实现安全通信。
整个流程通过公钥加密和会话密钥的方式,确保了通信的机密性、完整性和身份验证。