摘要:用户上线认证通过,VTYD任务创建用户任务,将用户输入的数据转发给用户任务;将用户断链消息转发给用户任务;
SSH/Telnet基本框架
动作说明:
(A)socket将用户连接请求、断连请求、数据输入发送给VTYD任务;
(B)用户上线时,VTYD将账户发送给AAA认证;
(C)用户上线认证通过,VTYD任务创建用户任务,将用户输入的数据转发给用户任务;将用户断链消息转发给用户任务;
(D)用户任务VTx处理输入的数据,完成命令行的执行;
(E)执行结果通过Socket发送至客户端。
任务说明:
(1)VTYD任务:
监听Telnet/SSH连接请求,创建用户任务VTx;
接收用户的输入,转发给对应用户任务VTx。
(2)VTx任务:
每个Telnet/SSH用户独占一个任务体;
任务体完成用户下发命令的处理,并输出处理结果。
SOCK(IP协议栈报文调度和处理)-->VTYD(接收所有用户请求)-->TCP-->SSH-->AAA(此处主要是对用户进行认证 )-->vty x。
建议与总结
第一阶段:建立TCP连接
客户端和服务器建立TCP连接。
第二阶段:版本协商
客户端和服务器互相发送SSH的版本号,确认并协商好版本。
SSH版本包括SSH1(SSH1.x)和SSH2(SSH2.0)。
第三阶段:算法协商
SSH客户端和SSH服务器进行算法协商,确定使用哪种加密算法。
该阶段涉及如下四种算法:
客户端和服务器互相发送Key Exchange Init报文,如图19-1所示。报文携带了四大类算法中,客户端或服务器当前支持的算法类型。
服务器遍历客户端的算法支持类型列表,选择和自己匹配的算法类型,作为四大类算法中的算法类型。因此优先选择算法的哪一种类型,以客户端的算法列表中顺序为准。
第四阶段:密钥交换GRP
客户端与服务器通过协商获得加密因子,双方采用协商好的加密因子对SSH报文进行加密。后续双方通过该加密因子加解密所有数据。
客户端发送GEX_INIT报文到服务器。对应的报文如下:
对应的报文如下:
对应的报文:
第五阶段:身份认证(密码认证/公钥认证)
以密码认证为例:此阶段,SSH将用户名和密码发送给AAA模块进行认证,AAA模块反馈SSH认证结果。如果认证成功,那么进入会话请求阶段;如果失败,那么SSH断开连接。
,
第六阶段:会话请求
认证通过后,客户端向服务器发送会话请求,请求服务器提供某种类型的服务,即请求与服务器建立相应的会话。服务器根据客户端请求进行回应。最终建立SSH会话通道。
第七阶段:会话交互
会话建立后,服务器和客户端在该会话上进行数据信息的交互,双方发送的数据均使用加密因子进行加解密。
配置举例
如图19-2所示,用户希望在服务器端和客户端进行安全的数据交互,配置一个登录用户为client001,使用password认证方式登录SSH服务器。
使用STelnet V1协议存在安全风险,实际应用中建议使用STelnet V2登录设备。
配置思路
在SSH服务器端配置SSH用户client001的认证方式为Password认证。在SSH服务器端开启STelnet服务功能。在SSH服务器端配置SSH用户client001的服务方式为STelnet。用户client001以STelnet方式实现登录SSH服务器。Password认证不安全,实际应用中建议使用AAA认证。
操作步骤
在服务器端创建SSH用户。# 配置VTY用户界面。
system-view
[HUAWEI] sysname SSH Server
[SSH Server] user-interface vty 0 4
[SSH Server-ui-vty0-4] authentication-mode aaa
[SSH Server-ui-vty0-4] protocol inbound ssh
[SSH Server-ui-vty0-4] user privilege level 15
[SSH Server-ui-vty0-4] quit
创建SSH用户client001。
# 新建用户名为client001的SSH用户,认证方式为password,密码是YsHsjx_202206。
[SSH Server] ssh user client001
[SSH Server] ssh user client001 authentication-type password
[SSH Server] aaa
[SSH Server-aaa] local-user client001 password irreversible-cipher YsHsjx_202206
[SSH Server-aaa] local-user client001 privilege level 15
[SSH Server-aaa] local-user client001 service-type ssh
[SSH Server-aaa] quit
[SSH Server] stelnet server enable
[SSH Server] ssh server-source -i Vlanif 10 //仅V200R020C00及之后版本需要配置这条命令。此处假设客户端使用IP地址10.1.1.1连接服务器,该地址对应的接口为Vlanif 10
# 第一次登录,需要使能SSH客户端首次认证功能。使能客户端Client001首次认证功能。
system-view
[HUAWEI] sysname client001
[client001] ssh client first-time enable
# 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...
Please select public key type for user authentication [R for RSA; D for DSA; Enter for Skip publickey authentication; Ctrl_C for Can
cel], Please select [R, D, Enter or Ctrl_C]:d
Enter password:
输入密码,显示登录成功信息如下:
验证配置结果。在SSH服务器端执行display ssh server status命令可以查看到STelnet服务已经使能。执行display ssh user-information命令可以查看服务器端SSH用户信息。
# 查看SSH状态信息。
[SSH Server] display ssh server status
SSH version :2.0
SSH connection timeout :60 seconds
SSH server key generating interval :0 hours
SSH authentication retries :3 times
SFTP server :Disable
Stelnet server :Enable
Scp server :Disable
SSH server source :0.0.0.0
ACL4 number :0
ACL6 number :0
# 查看SSH用户信息。
[SSH Server] display ssh user-information
User 1:
User Name : client001
Authentication-type : password
User-public-key-name : -
User-public-key-type : -
Sftp-directory : -
Service-type : stelnet
Authorization-cmd : No
SSH部分命令解释
ssh server-source all-interface
对于V200R020C00之前版本,缺省情况下,SSH服务器接收来自所有接口登录连接请求。
对于V200R020C00及之后版本,缺省情况下,SSH服务器不接收来自任何接口登录连接的请求。因此V200R020C00及之后版本的设备需要配置如下任一命令:
ssh server-source -i interface-type interface-number,配置指定接口为SSH服务器端的源接口。若指定源接口为VLANIF,且VLANIF下有配置Sub地址,则不支持通过Sub地址进行SSH登陆。
ssh server-source all-interface,配置SSH服务器的源接口为设备上所有配置了IPv4地址的接口。完成以上配置后,执行display network status all命令可以查看到设备端口监听的情况。其中,SSH的端口为22,Telnet的端口号为23。
ssh authentication-type default password
V200R011C10之前版本,设备没有配置缺省的SSH认证类型,因此必须要配置ssh authentication-type default password命令。
V200R011C10及之后的版本,设备缺省认证方式为密码认证。
若要配置对指定SSH用户进行password认证,还可以执行命令ssh user user-name authentication-type password进行配置:
#
ssh user john //SSH用户john
ssh user john authentication-type password //配置SSH用户john的认证方式为password
ssh user john service-type all //配置SSH用户john支持SFTP服务方式和STelnet服务方式
#
END
微思网络,始于2002年
专业IT认证培训23年,面向全国招生!
*网络技术:华为HCIA/ HCIP/HCIE;思科CCNA/CCNP/CCIE
*Linux技术:红帽 RHCE/RHCA
*K8S&容器:CKA/CKS
*数据库:ORACLE OCP/ OCM ;MySQL ;达梦数据库
*虚拟化:VMware VCP/VCAP
*安全认证:CISP体系/CISSP/ CISA;CCSK;CISAW体系
*管理类:PMP 项目管理;软考中/高项;ITIL体系;Togaf
其他课程如:ACP;Azure...
来源:奋斗的IT挨踢人