SSH协议(1)-工作原理及过程

 

SSH全称是Secure ShellSSH协议是基于应用层的协议为远程登录会话和其他网络服务提供安全性的协议

SSH使用最多的是远程登录和传输文件,实现此功能的传统协议都不安全(ftp,telnet等),因为它们使用明文传输数据。而SSH在传输过程中的数据是加密的,安全性更高。

 
工作原理 
SSH协议是基于非对称加密方法的,服务器和客户端都会生成自己的公钥和私钥。 
(1) 服务器建立公钥。若远程服务器是新系统,会在/etc/ssh目录下生成一个名为ssh_host_ecdsa_key.pub的公钥,同时生成一个名为ssh_host_ecdsa_key的私钥,这一对就是远程服务器的公钥与私钥。之后每回启动sshd服务的时候,系统会自动在此路径下查找公钥。 
远程服务器的公钥: 
这是远程服务器的公钥 
(2) 客户端请求连接。linux或者mac系统可以直接通过自带的shell连接,指令为ssh user@host,如果客户端和服务器是相同的用户,则可以省去user,直接使用ssh host。 
(3) 服务器发送公钥给客户端。服务器接到请求后,把公钥传给客户端使用。 
(4) 客户端记录服务器公钥并计算自己的公私钥。客户端将服务器传来的公钥记录在~/.ssh/known_hosts中,若是已经记录有该服务器公钥,则比对是否一致,一致后就计算客户端自己的公私钥。 
客户端保存的服务器公钥: 
客户端保存的服务器公钥 
(5) 客户端发送自己的公钥给服务器。客户端将自己的公钥发送给服务器,这样服务器端就有客户端公钥+服务器自己私钥,客户端就有服务器公钥+客户端自己私钥,组成了非对称加密系统。 
(6) 开始双向加解密。服务器发送数据:用客户端公钥加密,客户端收到数据后用自己私钥解密客户端发送数据:用服务器公钥加密,服务器收到数据后用自己私钥解密。 


工作过程 
(1) 版本号协商阶段,SSH目前包括 SSH1和SSH2两个版本, 双方通过版本协商确定使用的版本 
(2) 密钥和算法协商阶段,SSH支持多种加密算法, 双方根据本端和对端支持的算法,协商出最终使用的算法 
(3) 认证阶段,SSH客户端向服务器端发起认证请求, 服务器端对客户端进行认证 
(4) 会话请求阶段, 认证通过后,客户端向服务器端发送会话请求 
(5) 交互会话阶段 ,会话请求通过后,服务器端和客户端进行信息的交互 
认证方式 
认证方式主要有两种:密码认证和公钥认证。 
密码认证:输入账号密码进行认证。 
公钥认证:需要客户端生成一对公私钥,使用ssh-keygen生成,保存在~/.ssh路径下,然后使用指令ssh-copy-id user@host传到服务器端,以后再登录认证的时候,客户端自动发送公钥给服务器,服务对比一致则通过认证,不要繁琐地输入密码了。 
客户端生成的登录公钥: 
客户端生成的登录公钥 
服务器端接收的客户端登录公钥: 
服务器端保存的客户端登录公钥 
这一篇文章主要记录ssh协议的工作原理及过程,接下来还会写一篇ssh协议涉及的安全威胁及解决办法。

欢迎关注微信公众号:shoshana

原文地址:https://www.cnblogs.com/shoshana-kong/p/10985447.html