背景

笔者想要通过Python脚本批量获取工作环境中千余台交换设备的消息,但是目前的生产环境中存在不同厂家的网络设备(锐捷居多,华为、华三其次);且即便同厂家的不同型号、版本设备针对Telnet也做了不同配置,如锐捷的部分设备依靠用户名与密码完成Telnet,还有部分设备依靠密码与二级密码完成Telnet登陆。笔者需要知道这些登录方式具体与哪些配置命令相关。

连通性配置

以锐捷S2952G-E为例,版本为RGOS 10.4(2b12)p6 Release(196987)。

Ruijie#con
Enter configuration commands, one per line.  End with CNTL/Z.
Ruijie(config)#no logging consol
//关闭console口日志,生产环境中请谨慎
Ruijie(config)#int vlan 1
Ruijie(config-if-VLAN 1)#ip add 1.1.1.1 255.255.255.0
//设置vlanif地址作为管理地址,笔者电脑网卡设置ip地址为1.1.1.2/24,以便Telnet设备

设置VTY 密码+Enable密码登录

配置:(在Console接口上配置)

Ruijie#con
Enter configuration commands, one per line.  End with CNTL/Z.
Ruijie(config)#line vty 0 4 //设置能够同时远程该台设备的人数,0-4,共5个
Ruijie(config-line)#login //需要输入密码才能Telnet该设备
Login disabled on line 1, until 'password' is set.
Login disabled on line 2, until 'password' is set.
Login disabled on line 3, until 'password' is set.
Login disabled on line 4, until 'password' is set.
Login disabled on line 5, until 'password' is set.
Ruijie(config-line)#password line-vty-123
Ruijie(config-line)#exi
Ruijie(config)#enable password enable-123

测试:(新开一个终端进行Telnet 1.1.1.1)

User Access Verification

Password:(不显示,这里输入的是line-vty-123)

Ruijie>enable

Password:(不显示,这里输入的是enable-123)
Ruijie#

设置用户名+用户名密码登录

注,笔者当前的配置在原有配置上进行。

配置:(在Console接口上配置)

Ruijie#con
Enter configuration commands, one per line.  End with CNTL/Z.
Ruijie(config)#username ruijie privilege 15 password ruijie
//设置用户名与密码
Ruijie(config)#line vty 0 4
Ruijie(config-line)#login ?
  local  Local password checking
  <cr>   

Ruijie(config-line)#login local 
//启用“用户名+密码”的认证方式
Ruijie(config-line)#exi

测试:(新开一个终端进行Telnet 1.1.1.1)

User Access Verification

Username:ruijie
Password:(不显示,这里输入的是ruijie)

查看当前相关配置:

vlan 1
!
username admin password admin
username admin privilege 15
username ruijie password ruijie
username ruijie privilege 15
no service password-encryption
!
no logging console 
enable service web-server http
enable service web-server https
!
interface VLAN 1
 no ip proxy-arp
 ip address 1.1.1.1 255.255.255.0
!
line con 0
line vty 0 4
 login local //local认证的话,则无需输入line vty密码
 password line-vty-123
!

配置中默认存在username admin password admin,且username admin privilege 15(最高等级),故在Telnet设备时只用输入用户名及对应密码即可。

关于加密密码的不同等级

在设置enable密码时:

Ruijie(config)#enable secret ?
  0      Specifies an UNENCRYPTED password will follow
  5      Specifies an ENCRYPTED secret will follow
  LINE   The UNENCRYPTED (cleartext) 'enable' password
  level  Set exec level password

 注,如果命令为enable secret,无论选择哪种等级,show run时显示密码一定为密文

0

输入时的密码串为明文,如“ruijie”

5

输入时的密码串为使用MD5方式加密后的字符串

(如enable secret 5 $1$76jh$8yFypsvuqtx41Ar2)

LINE

清除加密密码

当然了,enable secret 5 enable-123后,在Show Run命令时也是以密文显示的,做配置时输入明文也没有问题。

在设置用户名密码时:

Ruijie#con
Enter configuration commands, one per line.  End with CNTL/Z.
Ruijie(config)#no username admin //删除用户“admin”

Ruijie(config)#username ruijie privilege ?
  <0-15>  User privilege level  (default value: 1)

Ruijie(config)#username ruijie privilege 15 ?
  nopassword  No password is required for the user to log in //该用户远程登录时无需密码
  password    Specify the password for the user
  permission  Grant permission on files or dirs
  reject      Reject some user behavior
  <cr>  

Ruijie(config)#username ruijie privilege 15 password ?
  0     Specifies an UNENCRYPTED password will follow
  7     Specifies a HIDDEN password will follow
  LINE  The UNENCRYPTED (cleartext) user password

0

输入时的密码串为明文,如“ruijie”

7

输入时的密码串为使用私有算法加密后的字符串

(如username admin pri 15 password 7 0058354a493e1d)

LINE

清除加密密码

0058354a493e1d其实就是“ruijie”,在show run后我们只能看到username admin pri 15 password 7 0058354a493e1d,实际上在远程登录时,我们输入密码“ruijie”就可以成功远程设备,且该密码一直以此方式显示,与是否使能password-encryption无关。

关于Service Password-encryption

以用户名+密码(username ruijie privilege 15 password ruijie)为例

使能password-encryption(service password-encryption) 时

password等级

show run时密码表现形式

0

username ruijie password 7 0058354a493e1d(密文)

7

username ruijie password 7 0058354a493e1d(密文)

LINE

username ruijie password 7 050a1337092610(密文)

去使能password-encryption(no service password-encryption) 时

password等级

show run时密码表现形式

0

username ruijie password ruijie(明文)

7

username ruijie password ruijie(明文)

LINE

username ruijie password ruijie(明文)

在设置enable密码时,只要enable secret xxxxxxxx,密码在show run后都以密文显示。