一节课详解SSH协议(ssh协议的工作原理)

网友投稿 1032 2022-09-23


一节课详解SSH协议(ssh协议的工作原理)

SSH介绍

 Telnet缺少安全的认证方式,而且传输过程采用TCP进行明文传输,存在很大的安全隐患。单纯提供Telnet服务容易招致DoS(Deny of Service)、主机IP地址欺骗、路由欺骗等恶意攻击。 随着人们对网络安全的重视,传统的Telnet和FTP通过明文传送密码和数据的方式,已经慢慢不被人接受。SSH(Secure Shell)是一个网络安全协议,通过对网络数据的加密,解决了这个问题。它在一个不安全的网络环境中,提供了安全的远程登录和其他安全网络服务。 SSH通过TCP进行数据交互,它在TCP之上构建了一个安全的通道。另外SSH服务除了支持标准端口22外,还支持其他服务端口,以防止受到非法攻击。

注意:

SSH协议包括SSH1.0,SSH1.5,SSH2.0

SSH的功能

SSH支持的客户端功能

 SSH客户端功能允许用户与支持SSH Server的路由器、UNIX主机等建立SSH连接

SFTP

 SFTP(SSH File Transfer Protocol)是SSH FTP的简称,是一种安全的FTP。SFTP建立在SSH连接的基础之上,远程用户可以安全地登录设备,进行文件管理和文件传送等操作,为数据传输提供了更高的安全保障。同时,由于设备提供了SFTP客户端功能,可以从本设备安全登录到远程SSH服务器上,进行文件的安全传输。

STelnet

 STelnet是基于SSH的安全Telnet服务。与Telnet相比,SSH服务器通过对客户端进行认证及双向的数据加密,为网络终端访问提供了安全的服务。

SCP

 SCP(Secure Copy)是基于SSH的安全协议,对客户端进行认证和数据加密,以保证在传统的非安全网络环境下进行安全的文件传输。 SCP使用SSH进行数据传输和用户认证,从而确保数据传输的可靠性和机密性。客户端可以发送(上传)文件到服务器,亦可从服务器请求(下载)文件或目录。缺省情况下,SCP运行于TCP协议下的22号端口。

SSH服务支持其他端口

 SSH协议的标准侦听端口号为22,攻击者不断访问标准端口,导致带宽的浪费和服务器性能的下降,致使其他正常用户无法访问,这是一种DoS(拒绝服务)攻击。 设定SSH服务端的侦听端口号为其他端口,攻击者不知道SSH侦听端口号的更改,可有效防止攻击者对SSH服务标准端口访问消耗带宽和系统资源。正常用户通过对非标准端口的SSH服务的访问,降低遭受DoS(拒绝服务)攻击可能性。 只有合法的用户采用SSH服务器设定的非标准侦听端口才能建立Socket连接,进行SSH协议的版本号协商、算法协商及会话密钥生成、认证、会话请求、会话阶段等过程。

安全的远程访问

SSH通过以下措施实现在不安全网络上提供安全的远程访问: 支持RSA(Revist-Shamir-Adleman Algorithm 非对称加密算法)/DSA(Digital-Signature Algorithm 数字签名算法)/ECC(Elliptic Curves Cryptography 椭圆曲线加密)公钥验证方式,根据非对称加密体系的加密原则,通过生成公钥和私钥,实现密钥的安全交换,最终实现安全的会话全过程。 支持证书验证方式,客户端通过证书签名来进行服务器端验证,有效防止中间人攻击。 支持数据加密标准DES(Data Encryption Standard)、3DES、AES(Advanced Encryption Standard)。 SSH客户端与服务器端通信时,对传输的数据进行加密,包括用户名及口令,有效防止对口令的窃听。 支持SM2椭圆曲线密码算法,SM2算法与RSA算法一样,同属于非对称密码算法体系,是基于ECC(Elliptic Curves Cryptography)算法的非对称算法。与RSA算法不同的是 RSA算法是基于大数的因子分解算法,导致了RSA算法的密钥的长度也越来越长。而长密钥带来了运算速度较慢、密钥存储和管理不方便问题。ECC算法是基于离散对数的算法,很难破解,具有更高的安全性。与RSA算法相比,在相同安全性条件下,ECC算法可以大大减少密钥的长度。相较于RSA,椭圆曲线密码算法使用更短的密钥长度就能实现比较牢固的加密强度,同时由于密钥长度相对较短,加密速度也就相对较快。总而言之,ECC椭圆曲线密码算法具有以下优点:

The server's public key will be saved with the name 172.16.1.1. Please wait... Feb 8 2020 11:34:46-08:00 R2 %%01SSH/4/SAVE_PUBLICKEY(l)[2]:When deciding whether to save the server's public key 172.16.1.1, the user chose Y. [R2] Enter password: //输入密码

基于公钥认证

SSH配置如下

通过STelnet登录其他设备配置举例(RSA认证方式和password认证方式) 通过STelnet登录其他设备配置的示例。在本示例中,通过在STelnet客户端和SSH服务器端生成本地密钥对,在SSH服务器端生成RSA公钥、并为用户绑定该RSA公钥,实现Stelnet客户端连接SSH服务器。 配置两个登录用户为client001和client002,分别使用password方式和RSA方式登录SSH服务器。配置思路

查看客户端上生成RSA公钥。

[~client002] display rsa local-key-pair public ======================Host Key========================== Time of Key pair created : 13:22:1 2010/10/25 Key Name : client002_Host Key Type : RSA Encryption Key ======================================================== Key Code: 308188 028180 B21315DD 859AD7E4 A6D0D9B8 121F23F0 006BB1BB A443130F 7CDB95D8 4A4AE2F3 D94A73D7 36FDFD5F 411B8B73 3CDD494A 236F35AB 9BBFE19A 7336150B 40A35DE6 2C6A82D7 5C5F2C36 67FBC275 2DF7E4C5 1987178B 8C364D57 DD0AA24A A0C2F87F 474C7931 A9F7E8FE E0D5A1B5 092F7112 660BD153 7FB7D5B2 171896FB 1FFC38CD 0203 010001 Host Public Key for PEM format Code: ---- BEGIN SSH2 PUBLIC KEY ---- AAAAB3NzaC1yc2EAAAADAQABAAAAgQCyExXdhZrX5KbQ2bgSHyPwAGuxu6RDEw98 25XYSkri89lKc9c2/f1fQRuLczzdSUojbzWrm7/hmnM2FQtAo13mLGqC11xfLDZn +8J1LffkxRmHF4uMNk1X3QqiSqDC+H9HTHkxqffo/uDVobUJL3ESZgvRU3+31bIX GJb7H/w4zQ== ---- END SSH2 PUBLIC KEY ---- Public key code for pasting into OpenSSH authorized_keys file: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCyExXdhZrX5KbQ2bgSHyPwAGuxu6RDEw9825XYSkri 89lKc9c2/f1fQRuLczzdSUojbzWrm7/hmnM2FQtAo13mLGqC11xfLDZn+8J1LffkxRmHF4uMNk1X3Qqi SqDC+H9HTHkxqffo/uDVobUJL3ESZgvRU3+31bIXGJb7H/w4zQ== rsa-key Host Public key for SSH1 format code: 1024 65537 125048203250833642388841080101906750228075076456213955541037945628567 57310398880086451511608221218821171562865637463140847157102422109476944363593619 24637760514734544191988044752471924402237145321162849626052751701862381759745461 33321165741031171160914926309797395278974490949461701171569544048167828558985421 ======================Server Key======================== Time of Key pair created : 13:22:1 2010/10/25 Key Name : client002_Server Key Type : RSA Encryption Key ======================================================== Key Code: 3067 0260 BDCEC48F 1EDA55AF 80C71881 CF22D6A4 02682F2F E50035C8 E1539F1F 9EB3FCAC 2BFEF147 EEF59F23 7270C3DD 22135C16 AAC236DE EFBF9865 E50D8D26 B7651BCB 6D87BC2B 96559C38 04FC034B 54CFE7B3 2B1BBA18 A96FFC29 EF70069D DD1EE053 0203 010001

将客户端上产生的RSA公钥传送到服务器端。

[~SSH Server] rsa peer-public-key rsakey001 Enter "RSA public key" view, return system view with "peer-public-key end". [*SSH Server-rsa-public-key] public-key-code begin Enter "RSA key code" view, return last view with "public-key-code end". [*SSH Server-rsa-public-key-rsa-key-code] 308188 [*SSH Server-rsa-public-key-rsa-key-code] 028180 [*SSH Server-rsa-public-key-rsa-key-code] B21315DD 859AD7E4 A6D0D9B8 121F23F0 006BB1BB [*SSH Server-rsa-public-key-rsa-key-code] A443130F 7CDB95D8 4A4AE2F3 D94A73D7 36FDFD5F [*SSH Server-rsa-public-key-rsa-key-code] 411B8B73 3CDD494A 236F35AB 9BBFE19A 7336150B [*SSH Server-rsa-public-key-rsa-key-code] 40A35DE6 2C6A82D7 5C5F2C36 67FBC275 2DF7E4C5 [*SSH Server-rsa-public-key-rsa-key-code] 1987178B 8C364D57 DD0AA24A A0C2F87F 474C7931 [*SSH Server-rsa-public-key-rsa-key-code] A9F7E8FE E0D5A1B5 092F7112 660BD153 7FB7D5B2 [*SSH Server-rsa-public-key-rsa-key-code] 171896FB 1FFC38CD [*SSH Server-rsa-public-key-rsa-key-code] 0203 [*SSH Server-rsa-public-key-rsa-key-code] 010001 [*SSH Server-rsa-public-key-rsa-key-code] public-key-code end [*SSH Server-rsa-public-key] peer-public-key end [*SSH Server] commit

为SSH用户Client002绑定SSH客户端的RSA公钥。

[~SSH Server] ssh user client002 assign rsa-key RsaKey001 [*SSH Server] commit

SSH服务器端STelnet服务使能使能STelnet服务功能。

[~SSH Server] stelnet server enable [*SSH Server] commit

STelnet客户端连接SSH服务器第一次登录,需要使能SSH客户端首次认证功能。使能客户端Client001首次认证功能。

system-view [~HUAWEI] sysname client001 [*HUAWEI] commit [~client001] ssh client first-time enable [*client001] commit

注意: 使能SSH客户端首次认证功能后,在STelnet客户端第一次登录SSH服务器时,不对SSH服务器的RSA、DSA或ECC公钥进行有效性检查。登录后,客户端将自动保存RSA、DSA或ECC公钥,为下次登录时认证。如果没有使能SSH客户端首次登录功能,当STelnet客户端第一次登录SSH服务器时,由于对SSH服务器的RSA、DSA或ECC公钥有效性检查失败,会导致登录服务器失败使能客户端Client002首次认证功能

[~client002] ssh client first-time enable [*client002] commit STelnet客户端Client001用password认证方式连接SSH服务器,输入配置的用户名和密码。 [~client001] stelnet 10.1.1.1 Please input the username:client001 Trying 10.1.1.1 ... Press CTRL+K to abort Connected to 10.1.1.1 ... The server is not authenticated. Continue to access it?(Y/N):y Save the server's public key?(Y/N):y The server's public key will be saved with the name 10.1.1.1. Please wait... Enter password:

输入密码Hello-huawei123,显示登录成功信息如下:

Info: The max number of VTY users is 20, and the number of current VTY users on line is 6. The current login time is 2011-01-06 11:42:42.

STelnet客户端Clent002用RSA认证方式连接SSH服务器。

[~client002] stelnet 10.1.1.1 Please input the username: client002 Trying 10.1.1.1 ... Press CTRL+K to abort Connected to 10.1.1.1 ... The server is not authenticated. Continue to access it?(Y/N):y Save the server's public key?(Y/N):y The server's public key will be saved with the name 10.1.1.1. Please wait... Info: The max number of VTY users is 20, and the number of current VTY users on line is 6. The current login time is 2011-01-06 11:42:42.

验证配置结果配置完成后,在SSH服务器端执行display ssh server status命令、display ssh server session,可以查看到STelnet服务已经使能,并且STelnet客户端已经成功连接到SSH服务器。查看SSH状态信息

[~SSH Server] display ssh server status SSH Version : 2.0 SSH authentication timeout (Seconds) : 60 SSH authentication retries (Times) : 3 SSH server key generating interval (Hours) : 0 SSH version 1.x compatibility : Enable SSH server keepalive : Disable SFTP IPv4 server : Disable SFTP IPv6 server : Disable STELNET IPv4 server : Enable STELNET IPv6 server : Enable SNETCONF IPv4 server : Enable SNETCONF IPv6 server : Enable SNETCONF IPv4 server port(830) : Disable SNETCONF IPv6 server port(830) : Disable SCP IPv4 server : Enable SCP IPv6 server : Enable SSH IPv4 server port : 22 SSH IPv6 server port : 22 SSH server source address : 10.1.1.1 SSH ipv6 server source address : 0::0 SSH ipv6 server source vpnName : ACL name : ACL number : ACL6 name : ACL6 number : SSH server ip-block : Enable

查看SSH服务器的连接信息。

[~SSH Server] display ssh server session -------------------------------------------------------------------------------- Session : 1 Conn : SFTP 0 Version : 2.0 State : Started Username : user1 Retry : 1 CTOS Cipher : aes256-ctr STOC Cipher : aes256-ctr CTOS Hmac : hmac-sha2-256 STOC Hmac : hmac-sha2-256 CTOS Compress : none STOC Compress : none Kex : diffie-hellman-group14-sha1 Public Key : ECC Service Type : stelnet Authentication Type : password Connection Port Number : 22 Idle Time : 00:00:49 Total Packet Number : 90 Packet Number after Rekey : 90 Total Data(MB) : 0 Data after Rekey(MB) : 0 Time after Session Established(Minute) : 0 Time after Rekey(Minute) : 0 --------------------------------------------------------------------------------

查看SSH用户信息。

[~SSH Server] display ssh user-information ---------------------------------------------------- Username : client001 Authentication-type : password User-public-key-name : - User-public-key-type : - Sftp-directory : - Service-type : stelnet Username : client002 Authentication-type : rsa User-public-key-name : rsakey001 User-public-key-type : - Sftp-directory : - Service-type : stelnet ----------------------------------------------------


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MyBatis源码解析之Transaction事务模块
下一篇:BGP的反射器和联盟(bgp协议中部署路由反射器和联盟的目的)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~