28-SSH操作
本章节下载 (9.34 MB)
目 录
1.5.1 交换机充当SSH服务器并采用password认证时的配置举例
1.5.2 交换机充当SSH服务器并采用公钥认证时的配置举例
1.5.3 交换机充当SSH客户端并采用password认证时的配置举例
1.5.4 交换机充当SSH客户端并采用公钥认证时的配置举例
1.5.5 交换机充当SSH客户端并采用不支持首次认证时的配置举例
SSH(Secure Shell,安全外壳)是一个用于在非安全网络中提供安全的远程登录以及其他安全网络服务的协议。当用户通过非安全的网络环境远程登录到交换机时,每次发送数据前,SSH都会自动对数据进行加密,当数据到达目的地时,SSH自动对加密数据进行解密,以此提供安全的信息保障。除此之外,SSH还提供强大的认证功能,以保护交换机不受诸如DNS和IP欺骗等攻击。
SSH采用客户端—服务器模式。设备支持SSH服务器功能,可以接受多个SSH客户端的连接。同时,设备还支持作为SSH客户端,允许与支持SSH服务器功能的设备建立SSH连接,从而实现从本地设备通过SSH登录到远程设备上。
此外,SSH还支持其他功能,比如可以对传输的数据进行压缩,从而加快传输的速度。又可以代替Telnet,或为FTP提供安全的“通道”。
注意:
l 目前,设备作为SSH服务器时,支持SSH2和SSH1两个版本;设备作为SSH客户端时,只支持SSH2版本。
l 如无特殊说明,文中的SSH均指SSH2。
加密和解密过程中使用的一组变换规则称为算法。未加密的信息称为明文,加密后的信息称为密文。加密和解密都是在密钥的控制下进行的。密钥是一组特定的字符串,是控制明文和密文变换的唯一参数,起到“钥匙”的作用。通过加密变换操作,可以将明文变换为密文,通过解密变换操作,将密文恢复为明文。如图1-1所示。
基于密钥的算法通常有两类:对称算法和非对称密钥算法。
非对称密钥算法是指通信的每一端都存在一对密钥,即一个私钥,一个公钥。公钥是公开的,私钥只有合法者拥有,从公钥很难分析出私钥。
非对称密钥算法可以用于加密,也就是用公钥对报文进行加密,然后由拥有私钥的合法者使用私钥对数据进行解密,这样保证数据的机密性。
非对称密钥算法还可以用于签名,比如用户1使用自己的私钥对数据进行签名,然后发给用户2,用户2可以用用户1的公钥验证签名,如果签名是正确的,那么就能够确认该数据来源于用户1。
RSA(Rivest Shamir Adleman)和DSA(Digital Signature Algorithm,数字签名算法)都是非对称密钥算法,RSA既可以用于加密,又可以用于签名,而DSA只用于签名。
& 说明:
目前SSH支持RSA和DSA两种非对称密钥算法。
在整个通讯过程中,为实现SSH认证的安全连接,服务器端与客户端要经历如下五个阶段:
表1-1 SSH服务器端与客户端建立连接的五个阶段
过程 |
说明 |
详细内容 |
版本号协商阶段 |
SSH目前包括SSH1和SSH2两个版本,双方通过版本协商确定使用的版本 |
|
密钥和算法协商阶段 |
SSH支持多种加密算法,双方根据本端和对端支持的算法,协商出最终使用的算法 |
|
认证阶段 |
SSH客户端向服务器端发起认证请求,服务器端对客户端进行认证 |
|
会话请求阶段 |
认证通过后,客户端向服务器端发送会话请求 |
|
交互会话阶段 |
会话请求通过后,服务器端和客户端进行信息的交互 |
具体步骤如下:
l
服务器端打开端口22,等待客户端连接。
l
客户端向服务器端发起TCP初始连接请求,TCP连接建立后,服务器端向客户端发送第一个报文,包括版本标志字符串,格式为“SSH-<主协议版本号>.<次协议版本号>-<软件版本号>”,协议版本号由主协议版本号和次协议版本号组成,软件版本号主要是为调试使用。
l
客户端收到报文后,解析该数据包,如果服务器端的协议版本号比自身的低,且能支持服务器端的版本,就使用服务器端的低版本协议号,否则使用自身的协议版本号。
l
客户端回应服务器端一个报文,包含了客户端决定使用的协议版本号。服务器端比较客户端发来的版本号,决定是否能同客户端一起工作。
l
如果协商成功,则进入密钥和算法协商阶段,否则服务器端断开TCP连接。
& 说明:
上述报文都是采用明文方式传输的。
具体步骤如下:
l
服务器端和客户端分别发送算法协商报文给对端,报文中包含自己支持的公钥算法列表、加密算法列表、MAC(Message Authentication Code,消息验证码)算法列表、压缩算法列表等。
l
服务器端和客户端根据对端和本端支持的算法列表得出最终使用的算法。
l
服务器端和客户端利用DH交换(Diffie-Hellman Exchange)算法、主机密钥对等参数,生成会话密钥和会话ID。
通过以上步骤,服务器端和客户端就取得了相同的会话密钥。对于后续传输的数据,两端都会使用会话密钥进行加密和解密,保证了数据传输的安全性。
具体步骤如下:
l
客户端向服务器端发送认证请求,认证请求中包含用户名、认证方法、与该认证方法相关的内容(如:password认证时,内容为密码)。
l
服务器端对客户端进行认证,如果认证失败,则向客户端发送认证失败消息,其中包含可以再次认证的方法列表。
l
客户端从认证方法列表中选取一种认证方法再次进行认证。
l
该过程反复进行,直到认证成功或者认证次数达到上限,服务器关闭连接为止。
SSH提供两种认证方法:
l
password认证:客户端向服务器发出password认证请求,将用户名和密码加密后发送给服务器;服务器将该信息解密后得到用户名和密码的明文,与设备上保存的用户名和密码进行比较,并返回认证成功或失败的消息。
l
公钥认证:采用数字签名的方法来认证客户端。目前,设备上可以利用RSA和DSA两种公共密钥算法实现数字签名。客户端发送包含用户名、公共密钥和公共密钥算法的公钥认证请求给服务器端。服务器对公钥进行合法性检查,如果不合法,则直接发送失败消息;否则,服务器利用数字签名对客户端进行认证,并返回认证成功或失败的消息。
认证通过后,客户端向服务器端发送会话请求。服务器端等待并处理客户端的请求。在这个阶段,客户端的请求被成功处理后,服务器会回应SSH_SMSG_SUCCESS包,SSH进入交互会话阶段;否则回应SSH_SMSG_FAILURE包,表示服务器处理请求失败或者不能识别请求。
会话请求成功后,连接进入交互会话阶段。在这个模式下,数据被双向传送。客户端将要执行的命令加密后传给服务器端,服务器端接收到报文,解密后执行该命令,将执行的结果加密发还给客户端,客户端将接收到的结果解密后显示到终端上。
在SSH服务器端进行必要的配置,以使SSH客户端能够正常访问SSH服务器端。
表1-2 SSH服务器端配置任务简介
配置任务 |
说明 |
详细配置 |
|
配置SSH服务器端 |
配置所在用户界面支持的协议 |
必选 |
|
生成或销毁密钥对 |
必选 |
||
导出RSA或DSA密钥 |
可选 |
||
创建SSH用户并指定认证方式 |
必选 |
||
配置SSH用户使用的服务类型 |
可选 |
||
配置服务器上的SSH管理功能 |
可选 |
||
在服务器端配置客户端的公钥 |
l 当采用Password认证方式时,不选 l 当采用公钥认证方式时,必选 |
||
为SSH用户分配公共密钥 |
l 当采用Password认证方式时,不选 l
当采用公钥认证方式时,必选 |
||
指定业务报文源IP或源接口 |
可选 |
在SSH服务器端必须设置系统支持SSH远程登录协议。配置结果在下次登录请求时生效。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入单一或多个用户界面视图 |
user-interface [ type ] first-number [ last-number
] |
- |
配置登录用户界面的认证为scheme方式 |
authentication-mode scheme [ command-authorization ] |
必选 缺省情况下,用户界面认证为password方式 |
配置所在用户界面支持的协议 |
protocol inbound { all |ssh | telnet } |
可选 缺省情况下,系统支持所有的协议,即支持Telnet和SSH |
注意:
l 如果在该用户界面上配置的协议支持SSH,为确保SSH用户登录成功,请务必配置登录用户界面的认证方式为authentication-mode scheme(采用AAA认证)。
l 如果用户配置了认证方式为authentication-mode password或authentication-mode none,则无法配置protocol inbound ssh;否则,如果配置了protocol inbound ssh,则认证方式无法配置为authentication-mode password或authentication-mode none。
该配置任务用来生成或者销毁密钥对,生成服务器端的RSA和DSA密钥对是完成SSH登录的必要操作。生成密钥对时,系统会提示您输入密钥的长度,密钥的最小长度为512位,最大长度为2048位。如果此时已经有了密钥对,系统提示是否替换原有密钥对。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
生成RSA密钥对 |
rsa local-key-pair create |
必选,二者选其一 缺省情况下,没有生成RSA密钥对 |
public-key local create rsa |
||
销毁RSA密钥对 |
rsa local-key-pair destroy |
可选,二者选其一 该命令用来销毁已生成的RSA密钥对 |
public-key local destroy rsa |
||
生成DSA密钥对 |
public-key local create dsa |
必选 缺省情况下,没有生成DSA密钥对 |
销毁DSA密钥对 |
public-key local destroy dsa |
可选 该命令用来销毁已生成的DSA密钥对 |
& 说明:
l 生成RSA密钥对后,当交换机工作在兼容SSH1模式下时,使用display rsa local-key-pair public命令或display public-key local rsa public命令时会显示两个公钥,包括H3C_Host和H3C_Server。当交换机工作在SSH2模式时,使用display rsa local-key-pair public命令或display public-key local rsa public命令只显示一个公钥,即H3C_Host。
l 生成密钥对的命令只需执行一遍,交换机重启后不必再次执行。
l 由于某些第三方软件(如:WinSCP)要求密钥的长度在768位以上(包括768位),因此建议生成RSA或DSA密钥对时,生成768位以上的密钥对。
对于已经生成的RSA或DSA密钥对,可以根据指定格式在屏幕上显示主机公钥或导出主机公钥到指定文件,从而为在远端配置主机公钥做准备。
表1-5 导出RSA公钥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
根据指定格式在屏幕上显示RSA主机公钥或导出主机公钥到指定文件 |
public-key local export rsa { openssh | ssh1 | ssh2 } [ filnename ] |
必选 |
表1-6 导出DSA公钥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
根据指定格式在屏幕上显示DSA主机公钥或导出主机公钥到指定文件 |
public-key local export dsa
{ openssh | ssh2 } [ filnename ] |
必选 |
& 说明:
对于DSA主机公钥,可指定的格式只有SSH2和OpenSSH两种。对于RSA主机公钥,则可指定SSH1,SSH2,OpenSSH三种格式。
该配置任务用来创建SSH用户并指定认证方式。对于新创建的用户,必须指定其认证方式,否则将无法登录。
表1-7 创建SSH用户并指定认证方式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
指定缺省的认证方式,所有创建的SSH用户都使用这个认证方式 |
ssh authentication-type default { all | password |
password-publickey | publickey | rsa } |
两者必选其一 缺省情况下,系统没有创建SSH用户,也不指定认证方式 注意:当两条命令同时配置,且认证方式不同时,SSH用户的认证方式以ssh user authentication-type命令的配置为准 |
ssh user username |
||
创建SSH用户,并为该用户配置认证方式 |
ssh user username authentication-type { all | password | password-publickey
| publickey | rsa } |
注意:
l 配置password认证时,username应与AAA中定义的有效用户名一致;配置公钥认证时,username就是SSH本地用户名,不需要在AAA中配置本地用户。有关AAA的相关内容请参见“AAA”。
l 如果用户配置的缺省认证方式为password,并且采用AAA本地认证,则还需要使用local-user命令在本地数据库中添加用户名和密码。在这种情况下,可以直接使用local-user命令配置的用户名和密码(配置service-type为ssh)登录SSH服务器,省略掉ssh user命令的配置。
l 如果用户配置的缺省认证方式为password,并且采用远程认证,如RADIUS认证,则可以直接使用远程服务器上的用户名和密码登录SSH服务器,省略掉ssh user命令的配置。
l publickey和rsa参数都表示公钥认证,并且实现方式一致。
l 如果配置为公钥认证方式,则SSH用户登录服务器后可以访问的命令级别可通过user privilege level命令来配置,且所有使用公钥认证方式的用户可访问的命令级别相同。
l 如果配置为password认证方式,则SSH用户登录服务器后可以访问的命令级别由AAA来授权,使用password认证方式的不同用户,能够访问的命令级别可以不同。
表1-8 配置SSH用户使用的服务类型
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置用户可以使用的服务类型 |
ssh user username service-type { stelnet | sftp | all } |
可选 缺省情况下,用户可以使用的服务类型为stelnet |
注意:
使用ssh user service-type命令配置用户可以使用的SSH服务类型时,如果该用户不存在,则系统会自动创建一个SSH用户。但此SSH用户无法登录成功,必须为此用户指定认证方式。
SSH服务器上提供了一系列管理功能,通过设置这些功能,可以防止恶意猜测密码等非法行为,更大限度地保证用户SSH连接的安全性。
表1-9 配置服务器上的SSH管理功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
设置SSH认证超时时间 |
ssh server timeout seconds |
可选 缺省情况下,认证超时时间为60秒 |
设置SSH验证重试次数 |
ssh server authentication-retries times |
可选 缺省情况下,SSH验证重试次数为3次 |
设置RSA服务器密钥的更新时间 |
ssh server rekey-interval
hours |
可选 缺省情况下,系统不更新RSA服务器密钥 |
设定服务器端兼容SSH1.x版本的客户端 |
ssh server compatible-ssh1x enable |
可选 缺省情况下,服务器端兼容SSH1.x版本的客户端 |
配置登录交换机的显示信息 |
header shell text |
可选 缺省情况下,没有配置显示信息 |
注意:
l 配置登录交换机的显示信息,只有当设置用户可以使用的服务类型为stelnet时才可成功。有关配置用户使用的服务类型请参见“1.2.6 配置SSH用户使用的服务类型”。
l 有关header命令的具体内容请参见“登录交换机”中的登录以太网交换机命令部分。
& 说明:
如果设备上对SSH用户配置的认证方式为password认证时,不需要配置客户端的公钥。
SSH用户采用公钥认证时,需要在服务器端配置客户端的RSA或DSA主机公钥,以便当客户端登录服务器端时,对客户端进行相应的验证。
可以通过手工配置和从公钥文件中导入两种方式来配置客户端的主机公钥:
l
手工配置方式:手工配置客户端的主机公钥时,可以采用拷贝粘贴的方式将客户端的主机公钥配置到服务器端;
l
从公钥文件中导入方式:从公钥文件中导入客户端的主机公钥时,系统会自动对由客户端生成的公钥文件进行格式转换,并实现客户端公钥的配置。这种方式需要客户端事先将密钥的公钥文件通过FTP/TFTP方式上传到服务器端。
表1-10 手工配置客户端的公钥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公共密钥视图 |
public-key peer keyname |
必选 |
进入公共密钥编辑视图 |
public-key-code begin |
- |
配置客户端的公钥 |
直接输入公钥内容 |
在输入密钥数据时,字符之间可以有空格,也可以按回车键继续输入数据,所配置的公钥必须是按公钥格式编码的十六进制字符串 |
退出公共密钥编辑视图,退回到公共密钥视图 |
public-key-code end |
- 退出视图时,系统自动保存配置的公钥密钥 |
退出公共密钥视图,退回到系统视图 |
peer-public-key end |
- |
表1-11 从公钥文件中导入客户端的公钥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
从公钥文件中导入SSH用户的公钥 |
public-key peer keyname import sshkey filename |
必选 |
在服务器端配置客户端的RSA主机公钥时,还可采用以下配置方式,如表1-12和表1-13所示。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入公共密钥视图 |
rsa peer-public-key keyname |
必选 |
进入公共密钥编辑视图 |
public-key-code begin |
- |
配置客户端的RSA公钥 |
直接输入RSA公钥内容 |
在输入密钥数据时,字符之间可以有空格,也可以按回车键继续输入数据,所配置的公钥必须是按公钥格式编码的十六进制字符串 |
退出公共密钥编辑视图,退回到公共密钥视图 |
public-key-code end |
- 退出视图时,保存输入的公钥数据 |
退出公共密钥视图,退回到系统视图 |
peer-public-key end |
- |
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
从公钥文件中导入SSH用户的RSA公钥 |
rsa peer-public-key keyname import sshkey filename |
必选 |
& 说明:
由于通过display rsa local-key-pair public命令显示的,或通过SSHKEY工具转换后的主机公钥数据不包含密钥类型等信息,所以不能直接作为参数手工配置到public-key peer命令中。display public-key local rsa public命令显示的主机公钥数据也不能手工配置到rsa peer-public-key命令中。
注意:
如果设备上对SSH用户配置的认证方式为password认证时,不需要为SSH用户分配公钥。
采用公钥认证时,需要在服务器端为SSH用户指定对应客户端的公钥。当客户端登录服务器时,服务器端就会根据指定SSH用户对应的公钥对客户端进行认证。
表1-14 为SSH用户分配公钥
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
为SSH用户分配公钥 |
ssh user username assign { publickey | rsa-key } keyname |
必选 多次分配公钥时,则以最后一次分配的公钥为准 |
& 说明:
publickey和rsa-key参数都表示公钥,并且实现方式一致。
用户可以通过以下配置,对SSH服务器指定业务报文源IP地址或者源接口,这样SSH服务器可以使用指定源IP地址或者源接口,作为SSH服务器的目的地址供SSH用户访问,增加了业务的可管理性。
表1-15 指定业务报文源IP地址或源接口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
为SSH服务器端指定源IP地址 |
ssh-server source-ip ip-address |
必选 缺省情况下,以系统决定的本设备地址供SSH用户访问 |
为SSH服务器端指定源接口 |
ssh-server source-interface interface-type interface-number |
必选 缺省情况下,以系统决定的本设备地址供SSH用户访问 |
SSH客户端可采用SSH客户端软件或支持SSH2的交换机访问SSH服务器。
表1-16 SSH客户端配置任务简介
配置任务 |
说明 |
详细配置 |
|
SSH客户端配置 |
采用SSH客户端软件 |
二者必选其一 |
|
采用支持SSH2的交换机作为客户端 |
SSH客户端软件有很多,例如PuTTY、OpenSSH等。SSH客户端要与服务器建立连接,需要做如下配置:
表1-17 采用客户端软件时的配置任务简介
配置任务 |
说明 |
详细配置 |
生成客户端密钥 |
l 当采用Password认证方式时,不选 l 当采用公钥认证方式时,必选 |
|
指定服务器IP地址 |
必选 |
|
选择远程连接协议为SSH |
必选 |
|
选择SSH版本 |
必选 |
|
以RSA或DSA方式打开SSH连接 |
l 当采用Password认证方式时,不选 l
当采用公钥认证方式时,必选 |
|
以口令方式打开SSH连接 |
l 当采用Password认证方式时,必选 l
当采用公钥认证方式时,不选 |
& 说明:
l 选择远程连接协议为SSH。通常客户端可以支持多种远程连接协议,如Telnet、Rlogin、SSH等。要建立SSH连接,必须选择远程连接协议为SSH。
l 选择SSH版本。由于设备目前支持的版本是SSH服务器2.0版本,客户端可以选择2.0或2.0以下版本。
l 指定私钥文件。如果在服务器端配置了SSH用户采用公钥认证,并为SSH用户指定了公钥,就必须在客户端指定与公钥对应的私钥文件。RSA或DSA密钥对是由客户端软件附带的工具生成的。
下面以客户端软件PuTTY、PuTTYGen和SSHKEY为例,说明SSH客户端的配置方法。
运行PuTTYGen.exe,选择要生成的密钥对。在参数栏中选择“SSH-2 RSA”或“SSH-2 DSA”,点击<Generate>,产生客户端密钥对。
图1-2 生成客户端密钥(1)
在产生密钥对的过程中需不停的移动鼠标,鼠标移动仅限于下图蓝色框中除绿色标记进程条外的地方,否则进程条的显示会不动,密钥对将停止产生,见图1-3。
密钥对产生后,点击<save public key>,输入存储公钥的文件名public,点击保存。
图1-4 生成客户端密钥(3)
同理,点击<save private key>存储私钥,弹出警告框,提醒是否保存没做任何保护措施的私钥,点击<Yes>,输入私钥文件名即可,此处为private,点击保存。
运行SSHKEY.exe,点击<Browse>,选择公钥文件public。然后点击<Convert>,即可生成PKCS编码格式的RSA公钥数据。
图1-6 生成客户端密钥(5)
打开PuTTY.exe程序,出现如下客户端配置界面。
图1-7 SSH客户端配置界面(1)
在“Host Name(or IP address)”文本框中输入SSH服务器的IP地址(要求SSH服务器的IP地址与SSH客户端主机的路由可达)。
如图1-7,在“Protocol”选择栏中选择“SSH”。
单击SSH客户端配置界面左边目录树(“Category”)中的连接协议(“Connection”)中的“SSH”,出现如图1-8的界面。
图1-8 SSH客户端配置界面(2)
在“Protocol options”区域中,选择“Preferred SSH protocol version”参数的值为2。
& 说明:
对于有些SSH客户端软件,只有在选择SSH1版本才支持DES算法,选择SSH2版本则不支持DES算法。PuTTY客户端软件在选择了DES后,可以在SSH2版本中支持DES算法协商。
如果用户需要公钥认证,就必须指定相应的私钥文件。如果用户只需要密码认证,则不需要指定相应的私钥文件。
如图1-8,单击“SSH”下面的“Auth”(认证),出现如图1-9的界面。
图1-9 SSH客户端配置界面(3)
单击<Browse…>按钮,弹出文件选择窗口。选择私钥文件,并点击<Open>按钮即可。随后出现如图1-10所示的SSH客户端界面,如果连接正常则会提示用户输入用户名。认证成功后,即可登录到服务器端。
图1-10 SSH客户端界面(1)
(1)
在图1-8中,单击<Open>按钮,出现如图1-11所示的SSH客户端界面,如果连接正常则会提示用户输入用户名及密码。
图1-11 SSH客户端界面(2)
(2)
输入正确的用户名和密码,即可成功进行SSH登录连接。
(3)
退出登录,在用户视图下执行命令quit即可。
表1-18 采用支持SSH2的交换机作为客户端时的配置任务简介
配置任务 |
说明 |
详细配置 |
设置SSH客户端是否支持首次认证 |
可选 |
|
建立SSH客户端和服务器端的连接 |
必选 |
当设备作为SSH客户端和服务器端连接时,可以设置SSH客户端对访问的SSH服务器是否支持首次认证。
l
如果支持首次认证,是指当SSH客户端首次访问服务器端,而客户端没有配置服务器端的主机公钥时,用户可以选择继续访问该服务器端,并在客户端保存该主机公钥;当用户下次访问该服务器端时,就以保存的主机公钥来认证该服务器。
l
如果不支持首次认证,则当客户端没有配置服务器端的主机公钥时,客户端将拒绝访问该服务器。用户必须事先将要访问的服务器端的主机公钥配置在本地,同时指定要连接的服务器端的主机公钥名称,以便客户端对连接的服务器进行认证。
表1-19 设置SSH客户端支持首次认证
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
设置SSH客户端对访问的SSH服务器进行首次认证 |
ssh client first-time enable |
可选 缺省情况下,客户端支持首次认证 |
表1-20 设置SSH客户端不支持首次认证
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
设置SSH客户端对访问的SSH服务器不进行首次认证 |
undo ssh client first-time |
必选 缺省情况下,客户端支持首次认证 |
配置服务器端的公钥 |
请参见“1.2.8 在服务器端配置客户端的公钥” |
必选 在客户端配置服务器端公钥的方法,与在服务器端配置客户端公钥的方法相同 |
在客户端上指定要连接的服务器端的主机公钥名称 |
ssh client { server-ip | server-name } assign { publickey | rsa-key } keyname |
必选 |
当认证方式不同时,SSH客户端与SSH服务器建立连接的方式不同,具体请参见表1-21。
表1-21 建立SSH客户端和服务器端的连接
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
建立SSH客户端和服务器端的连接 |
ssh2 { host-ip | host-name } [
port-num ] [ identity-key { dsa | rsa } | prefer_kex { dh_group1 | dh_exchange_group } | prefer_ctos_cipher
{ des | aes128 } | prefer_stoc_cipher { des | aes128
} | prefer_ctos_hmac { sha1
| sha1_96 | md5 | md5_96 } | prefer_stoc_hmac { sha1
| sha1_96 | md5 | md5_96 } ] * |
必选 该配置用来启动SSH客户端和服务器端建立连接,并指定客户端和服务器的首选密钥交换算法、首选加密算法和首选HMAC算法 注意: l 当采用Password认证方式时,不需要使用identity-key关键字 l 当采用公钥认证方式时,对于identity-key关键字的使用可选 |
& 说明:
如果在服务器端指定客户端的认证方式为公钥认证,当客户端登录服务器端时客户端需要读取本地的私钥进行验证。由于公钥认证可以采用RSA和DSA两种公钥算法,所以需要用identity-key关键字指定采用的公钥算法,才能得到正确的本地私钥数据,否则无法成功登录。
用户可以通过以下配置,对SSH客户端指定源IP地址或者源接口,这样客户端可以用指定的IP地址或接口访问SSH服务器,增加了业务的可管理性。
表1-22 指定业务报文源IP地址或源接口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
为SSH客户端指定源IP地址 |
ssh2 source-ip ip-address |
必选 缺省情况下,以系统决定的本设备地址访问SSH服务器 |
为SSH客户端指定源接口 |
ssh2 source-interface interface-type interface-number |
必选 缺省情况下,以系统决定的本设备地址访问SSH服务器 |
完成上述配置后,在任意视图下执行display命令,可以显示配置SSH后的运行情况。通过查看显示信息,用户可以验证配置的效果。
表1-23 SSH配置显示
操作 |
命令 |
说明 |
显示RSA密钥对的公钥部分 |
display rsa local-key-pair public |
display命令可以在任意视图下执行 |
显示客户端RSA密钥对的公钥部分 |
display rsa peer-public-key [ brief | name keyname ] |
|
查看RSA或DSA密钥的公钥部分 |
display public-key local
{ dsa | rsa } public |
|
显示客户端的公钥部分 |
display public-key peer [ brief | name pubkey-name ] |
|
显示SSH状态信息和会话信息 |
display ssh server { session | status } |
|
显示SSH用户信息 |
display ssh user-information [ username ] |
|
显示当前为SSH服务器端设置的源IP地址 |
display ssh-server source-ip |
|
显示客户端保存的服务器端的主机公钥和服务器的对应关系 |
display ssh server-info |
|
显示当前为SSH客户端设置的源IP地址 |
display ssh2 source-ip |
当用户通过一个不能保证安全的网络远程登录到交换机时,为更大限度地保证数据信息交换的安全性,使用SSH来实现此目的,并采用password认证。如图1-12所示,PC终端(SSH Client)上运行支持SSH2.0的客户端软件,与交换机(SSH Server)建立本地连接。
图1-12 SSH Server采用password认证时的配置组网图
l
SSH服务器端配置
# 在交换机上创建VLAN接口,并为其分配IP地址,作为客户端连接的SSH服务器地址。
<H3C> system-view
[H3C] interface vlan-interface 1
[H3C-Vlan-interface1] ip address 192.168.0.1 255.255.255.0
[H3C-Vlan-interface1] quit
# 生成RSA和DSA密钥对。
[H3C] public-key local create rsa
[H3C] public-key local create dsa
# 设置用户接口上的认证模式为AAA认证。
[H3C] user-interface vty 0 4
[H3C-ui-vty0-4] authentication-mode scheme
# 设置用户接口上支持SSH协议。
[H3C-ui-vty0-4] protocol inbound ssh
[H3C-ui-vty0-4] quit
# 创建用户client001,设置认证密码为abc,登录协议为SSH,能访问的命令级别为3。
[H3C] local-user client001
[H3C-luser-client001] password simple abc
[H3C-luser-client001] service-type ssh level 3
[H3C-luser-client001] quit
# 指定用户client001的认证方式为password
[H3C] ssh user client001 authentication-type password
l
SSH客户端配置
# 客户端主机配置IP地址
客户端主机的IP地址必须同交换机上的VLAN接口的IP地址位于同一个网段,这里设置为“192.168.0.2”。
# 建立与SSH服务器端的连接
SSH客户端软件的配置(以Putty0.58为例)。
(1)
打开PuTTY.exe程序,出现如下客户端配置界面。
图1-13 SSH客户端配置界面
在“Host Name(or IP address)”文本框中输入SSH服务器的IP地址。
(2)
在图1-13中,单击<Open>按钮,出现如图1-14所示的SSH客户端界面,如果连接正常则会提示用户输入用户名client001,密码abc。认证成功后,即可登录到服务器端。
图1-14 SSH客户端界面
当用户通过一个不能保证安全的网络远程登录到交换机时,为更大限度地保证数据信息交换的安全性,使用SSH来实现此目的,并采用公钥认证。如图1-15所示,PC终端(SSH Client)上运行支持SSH2.0的客户端软件,与交换机(SSH Server)建立本地连接。
图1-15 SSH Server采用公钥认证时的配置组网图
& 说明:
采用公钥认证时,可以采用RSA或DSA公钥作为服务器端认证客户端的公钥。这里以RSA公钥为例。
l
SSH服务器端配置
# 在交换机上创建VLAN接口,并为其分配IP地址,作为客户端连接的SSH服务器地址。
<H3C> system-view
[H3C] interface vlan-interface 1
[H3C-Vlan-interface1] ip address 192.168.0.1 255.255.255.0
[H3C-Vlan-interface1] quit
# 生成RSA和DSA密钥对。
[H3C] public-key local create rsa
[H3C] public-key local create dsa
# 设置用户接口上的认证模式为AAA认证。
[H3C] user-interface vty 0 4
[H3C-ui-vty0-4] authentication-mode scheme
# 设置用户接口上支持SSH协议。
[H3C-ui-vty0-4] protocol inbound ssh
# 设置用户能访问的命令级别为3。
[H3C-ui-vty0-4] user privilege level 3
[H3C-ui-vty0-4] quit
# 创建用户client001,并指定认证方式为公钥认证。
[H3C] ssh user client001 authentication-type publickey
& 说明:
这里需要先在SSH客户端使用SSH客户端软件生成RSA密钥对,并将生成的RSA公钥保存到指定文件中,再将此公钥文件通过FTP/TFTP方式上传到服务器端,文件名为public。有关配置请参见客户端的配置。
# 在服务器端从文件public中导入客户端的公钥,公钥名为Switch001。
[H3C] public-key peer Switch001 import sshkey public
# 为用户client001指定公钥Switch001。
[H3C] ssh user client001 assign rsa-key Switch001
l
SSH客户端的配置
# 生成密钥对(以PuTTYGen为例)。
运行PuTTYGen.exe,选择要生成的密钥对。此处参数栏选择“SSH2(RSA)”,点击<Generate>,产生客户端密钥对。
图1-16 生成客户端密钥(1)
& 注意:
在产生密钥对的过程中需不停的移动鼠标,鼠标移动仅限于下图蓝色框中除绿色标记进程条外的地方,否则进程条的显示会不动,密钥对将停止产生,见图1-17。
密钥对产生后,点击<save public key>,输入存储公钥的文件名public,点击保存。
图1-18 生成客户端密钥(3)
同理,点击<save private key>存储私钥,弹出警告框,提醒是否保存没做任何保护措施的私钥,点击<Yes>,输入私钥文件名即可,此处为private,点击保存。
图1-19 生成客户端密钥(4)
& 说明:
客户端生成密钥对后,需要将保存的公钥文件通过FTP/TFTP方式上传到服务器端,并完成服务器端配置后,才可继续客户端的配置。
# 建立与SSH服务器端的连接
SSH客户端软件的配置(以Putty0.58为例)。
(1)
打开PuTTY.exe程序,出现如图1-20所示的客户端配置界面。
图1-20 SSH客户端配置界面(1)
在“Host Name(or IP address)”文本框中输入SSH服务器的IP地址。
(2)
单击“SSH”下面的“Auth”(认证),出现如图1-21的界面。
图1-21 SSH客户端配置界面(2)
单击<Browse…>按钮,弹出文件选择窗口。选择与配置到服务器端的公钥对应的私钥文件,并确定即可。
(3)
如图1-21,单击<Open>按钮,出现如图1-22所示的SSH客户端界面,如果连接正常则会提示用户输入用户名client001。认证成功后,即可登录到服务器端。
图1-22 SSH客户端界面
当用户通过交换机远程登录到另一台交换机时,如果通过的网络不能保证安全,为更大限度地保证数据信息交换的安全性,使用SSH来实现此目的,并采用password认证。如图1-23所示:
l
交换机SwitchA作为SSH客户端,用来进行SSH登录的用户名为client001。
l
交换机SwitchB作为SSH服务器,IP地址为10.165.87.136。
图1-23 SSH客户端采用password认证时的配置组网图
l
配置SwitchB
# 在交换机上创建VLAN接口,并为其分配IP地址,作为客户端连接的SSH服务器地址。
<H3C> system-view
[H3C] interface vlan-interface 1
[H3C-Vlan-interface1] ip address 10.165.87.136 255.255.255.0
[H3C-Vlan-interface1] quit
# 生成RSA和DSA密钥对。
[H3C] public-key local create rsa
[H3C] public-key local create dsa
# 设置用户接口上的认证模式为AAA认证。
[H3C] user-interface vty 0 4
[H3C-ui-vty0-4] authentication-mode scheme
# 设置用户接口上支持SSH协议。
[H3C-ui-vty0-4] protocol inbound ssh
[H3C-ui-vty0-4] quit
# 创建用户client001,设置认证密码为abc,登录协议为SSH,能访问的命令级别为3。
[H3C] local-user client001
[H3C-luser-client001] password simple abc
[H3C-luser-client001] service-type ssh level 3
[H3C-luser-client001] quit
# 配置SSH用户 client001认证方式为password。
[H3C] ssh user client001 authentication-type password
l
配置SwitchA
# 在交换机上创建VLAN接口,并为其分配IP地址,作为连接SSH服务器端的SSH客户端地址。
<H3C> system-view
[H3C] interface vlan-interface 1
[H3C-Vlan-interface1] ip address 10.165.87.137 255.255.255.0
[H3C-Vlan-interface1] quit
# 建立到服务器10.165.87.136的SSH连接。
[H3C] ssh2 10.165.87.136
Username: client001
Trying 10.165.87.136 ...
Press CTRL+K to abort
Connected to 10.165.87.136 ...
The Server is not authenticated. Do you continue to access it?(Y/N):y
Do you want to save the server's public key?(Y/N):n
Enter password:
**************************************************************************
* Copyright(c) 2004-2007 Hangzhou H3C Tech. Co., Ltd. All rights reserved. *
* Without the owner's prior written consent,
*
* no decompiling or reverse-engineering shall be allowed.
*
**************************************************************************
<H3C>
当用户通过交换机远程登录到另一台交换机时,如果通过的网络不能保证安全,为更大限度地保证数据信息交换的安全性,使用SSH来实现此目的,并采用公钥认证。如图1-24所示:
l
交换机SwitchA作为SSH客户端,用来进行SSH登录的用户名为client001。
l
交换机SwitchB作为SSH服务器,IP地址为10.165.87.136。
图1-24 SSH客户端采用公钥认证时的配置组网图
& 说明:
采用公钥认证时,可以采用RSA或DSA公钥作为服务器端认证客户端的公钥。这里以DSA公钥为例。
l
配置SwitchB
# 在交换机上创建VLAN接口,并为其分配IP地址,作为客户端连接的SSH服务器地址。
<H3C> system-view
[H3C] interface vlan-interface 1
[H3C-Vlan-interface1] ip address 10.165.87.136 255.255.255.0
[H3C-Vlan-interface1] quit
# 生成RSA和DSA密钥对。
[H3C] public-key local create rsa
[H3C] public-key local create dsa
# 设置用户接口上的认证模式为AAA认证。
[H3C] user-interface vty 0 4
[H3C-ui-vty0-4] authentication-mode scheme
# 设置用户接口上支持SSH协议。
[H3C-ui-vty0-4] protocol inbound ssh
# 设置用户能访问的命令级别为3。
[H3C-ui-vty0-4] user privilege level 3
[H3C-ui-vty0-4] quit
# 指定用户client001的认证方式为公钥认证。
[H3C] ssh user client001 authentication-type publickey
& 说明:
这里需要先在SSH客户端生成DSA密钥对,并将生成的DSA公钥保存到指定文件中,再将此公钥文件通过FTP/TFTP方式上传到服务器端,文件名为Switch001。有关配置请参见客户端的配置。
# 在服务器端从文件Switch001中导入客户端的公钥,公钥名为Switch001。
[H3C] public-key peer Switch001 import sshkey Switch001
# 为用户client001指定公钥Switch001。
[H3C] ssh user client001 assign rsa-key Switch001
l
配置SwitchA
# 在交换机上创建VLAN接口,并为其分配IP地址,作为连接SSH服务器端的SSH客户端地址。
<H3C> system-view
[H3C] interface vlan-interface 1
[H3C-Vlan-interface1] ip address 10.165.87.137 255.255.255.0
[H3C-Vlan-interface1] quit
# 生成DSA密钥对。
[H3C] public-key local create dsa
# 将生成的DSA主机公钥导出到指定文件中,文件名为Switch001。
[H3C] public-key local export dsa ssh2 Switch001
& 说明:
客户端生成密钥对后,需要将保存的公钥文件通过FTP/TFTP方式上传到服务器端,并完成服务器端配置后才可继续客户端的配置。
# 建立到服务器10.165.87.136的SSH连接。
[H3C] ssh2 10.165.87.136 identity-key dsa
Username: client001
Trying 10.165.87.136 ...
Press CTRL+K to abort
Connected to 10.165.87.136 ...
The Server is not authenticated. Do you continue to access it?(Y/N):y
Do you want to save the server's public key?(Y/N):n
**************************************************************************
* Copyright(c) 2004-2007 Hangzhou H3C Tech. Co., Ltd. All rights reserved. *
* Without the owner's prior written consent,
*
* no decompiling or reverse-engineering shall be allowed.
*
**************************************************************************
<H3C>
当用户通过交换机远程登录到另一台交换机时,如果通过的网络不能保证安全,为更大限度地保证数据信息交换的安全性,使用SSH来实现此目的。如图1-25所示:
l
交换机SwitchA作为SSH客户端,用来进行SSH登录的用户名为client001。
l
交换机SwitchB作为SSH服务器,IP地址为10.165.87.136。
l
采用公钥认证方式,以提高安全性。
图1-25 SSH客户端配置组网图
l
配置SwitchB
# 在交换机上创建VLAN接口,并为其分配IP地址,作为客户端连接的SSH服务器地址。
<H3C> system-view
[H3C] interface vlan-interface 1
[H3C-Vlan-interface1] ip address 10.165.87.136 255.255.255.0
[H3C-Vlan-interface1] quit
# 生成RSA和DSA密钥对。
[H3C] public-key local create rsa
[H3C] public-key local create dsa
# 设置用户接口上的认证模式为AAA认证。
[H3C] user-interface vty 0 4
[H3C-ui-vty0-4] authentication-mode scheme
# 设置用户接口上支持SSH协议。
[H3C-ui-vty0-4] protocol inbound ssh
# 设置用户能访问的命令级别为3。
[H3C-ui-vty0-4] user privilege level 3
[H3C-ui-vty0-4] quit
# 指定用户client001的认证方式为公钥认证。
[H3C] ssh user client001 authentication-type publickey
& 说明:
这里需要先在SSH客户端生成DSA密钥对,并将生成的DSA公钥保存到指定文件中,再将此公钥文件通过FTP/TFTP方式上传到服务器端,文件名为Switch001。有关配置请参见客户端的配置。
# 在服务器端从文件Switch001中导入客户端的公钥,公钥名为Switch001。
[H3C] public-key peer Switch001 import sshkey Switch001
# 为用户client001指定公钥Switch001。
[H3C] ssh user client001 assign rsa-key Switch001
# 将服务器端生成的DSA主机公钥导出到指定文件中,文件名为Switch002。
[H3C] public-key local export dsa ssh2 Switch002
& 说明:
采用不支持首次认证时,需要将服务器端导出的DSA密钥的公钥文件通过FTP/TFTP方式上传到客户端,文件名为Switch002。
l
配置SwitchA
# 在交换机上创建VLAN接口,并为其分配IP地址,作为连接SSH服务器端的SSH客户端地址。
<H3C> system-view
[H3C] interface vlan-interface 1
[H3C-Vlan-interface1] ip address 10.165.87.137 255.255.255.0
[H3C-Vlan-interface1] quit
# 生成DSA密钥对。
[H3C] public-key local create dsa
# 将生成的DSA主机公钥导出到指定文件中,文件名为Switch001。
[H3C] public-key local export dsa ssh2 Switch001
& 说明:
客户端生成密钥对后,需要将导出的公钥文件通过FTP/TFTP方式上传到服务器端。并完成服务器端配置后才可继续客户端的配置。
# 设置不支持首次认证
[H3C] undo ssh client first-time
& 说明:
采用不支持首次认证时,需要先在SSH服务器端将SSH服务器端生成的DSA公钥导出到指定文件中,再将此公钥文件通过FTP/TFTP方式上传到客户端,文件名为Switch002。有关配置请参见服务器端的配置。
# 在客户端从文件Switch002中导入服务器端的公钥,公钥名为Switch002。
[H3C] public-key peer Switch002 import sshkey Switch002
# 在客户端上指定要连接的服务器端的主机公钥名称。
[H3C] ssh client 10.165.87.136 assign rsa-key Switch002
# 建立到服务器10.165.87.136的SSH连接。
[H3C] ssh2 10.165.87.136 identity-key dsa
Username: client001
Trying 10.165.87.136 ...
Press CTRL+K to abort
Connected to 10.165.87.136 ...
**************************************************************************
* Copyright(c) 2004-2007 Hangzhou H3C Tech. Co., Ltd. All rights reserved. *
* Without the owner's prior written consent,
*
* no decompiling or reverse-engineering shall be allowed.
*
**************************************************************************
<H3C>
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!