三、 SSH服务器和客户端工作流程
SSH服务器和客户端工作流程见下图。
![]() |
| 图1 SSH服务器和客户端工作流程 |
1. SSH客户端发出请求连接SSH服务器;
2. SSH检查申请SSH客户端数据包和IP地址;
3. SSH服务器通过安全验证后发送密钥给ssh客户;
4. 本地sshd将密钥发服务器回远程sshd 服务器。
至此为止ssh客户端和远程SSH服务器建立了一个加密会话。
SSH的安全验证方式
用户通过SSH可以把所有传输的数据进行加密,使“中间人”的攻击方式不可能实现,而且也能够防止DNS和IP欺骗。它还有一个额外的好处是传输的数据是经过压缩的,可以加快传输的速度。SSH作用广泛,既可以代替Telnet,又可以为FTP、POP,甚至为PPP提供一个安全的“通道”。SSH协议在预设的状态中,提供两个服务器功能:一个是类似Telnet的远程联机使用Shell服务器,即俗称SSH功能;另一个是类似FTP服务的SFTP-Server功能,可提供更安全的FTP服务。
SSH的安全验证如何工作呢?主要依靠联机加密技术。从客户端来看,有以下两种安全验证级别:
1.基于口令的安全验证(ssh1) 只要知道自己的账号和口令,就可以登录到远程主机。所有传输的数据都将被加密,但是不能保证正在连接的服务器就是想要连接的服务器。可能受到“中间人”的攻击。
2.基于密匙的安全验证(ssh2) 需要依靠密匙,即用户必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用密匙进行安全验证。服务器收到请求之后,先在该服务器的home目录下寻找公用密匙,然后把它和发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge),并把它发送给客户端软件。客户端软件收到“质询”后,就可以用私人密匙解密再把它发送给服务器。使用这种方式,用户必须知道自己密匙的口令。与第一种级别相比,这种级别不需要在网络上传送口令,不仅加密所有传送的数据,而且阻止了“中间人”攻击方式。整个登录的过程一般需要10秒。
