■ 江西 张亮
编者按:笔者通过比较telnet与SSH方式异同,亲自实践如何通过脚本实现SSH自动登录。
根据网络安全加固要求,笔者所在单位将辖内8台核心网络设备的登录方式,均全部改为SSH登录验证方式,原Telnet服务关停并启用只允许SSH登录方式。关停Telnet服务后,核心网络设备均需要借助SecureCRT中提供SSH1、SSH2登录设备,原来通过cmd控制台登录方式将不能访问。
因笔者分行机房8台核心网络设备,均改为SSH登录方式后,原来编写的Telnet脚本不能继续自动登录网络设备,实现核心设备的定期备份。虽然采用SSH登录验证,网络的安全性得到大大提高,但是作为一名分行的运维人员,核心网络设备的定期备份依然不然少,起初失效后笔者通过手工每周定期网络配置备份,但是工作量较繁琐且经常忘记,后面笔者通过翻阅有关SSH相关资料,通过自身的亲自实践完成了SSH方式下设备自动登录并实现备份。
SSH代表完全外壳(Secure Shell),它是通过互联网访问网络设备和服务器唯一的主要协议,默认运行端口是22,更安全而且加密传输。TELNET是电信(Telecommunications)和网络(NetWorks)的联合缩写,UNIX平台上最为熟知的网络协议,是一种不安全的通信协议,它不使用任何安全机制,通过网络/互联网传输明文格式的数据,包括密码任何嗅探工具都容易抓取数据包,默认运行端口是23。
笔者分行中心机房8台核心设备,首选检查是否所有网络交换设备开启SSH服务,确认后关闭Telnet服务,其次编写SSH脚本自动登录命令,并通过SecureCRT软件执行脚本,最后采用tftp&ftp服务器,实现配置备份下载至远程网络管理机器中留存,这个流程指令通过编写一个批交易指令完成,并通过电脑本身自带的任务计划建立这个批交易任务即可。
实现SSH自动验证登录,首先检查网络设备是否开启SSH服务,如未开启需开启该服务,下面以一台上联核心设备(HUAWEI NE20E-X6)为例,首选登录交换设备通过命令dis cur查看配置信息,查看是否包括local-user h3c service-type terminal ssh命令信息。
如果maipu设备则通过命令sh run查看配置,查看是否包含ip ssh server服务。如果配置信息中为不包括该命令信息,则通过以下命令添加,下面笔者介绍华为与迈普两种常用设备更改。
首选需要以Telent方式方式登录,导入SSH服务相关命令,具体参考命令如下:
aaa
local-user 原在用用户名 service-type terminal telnet ssh /**添加telnet及SSH登录方式**/
stelnet server enable
ssh authenticationtype default password
ssh client first-time enable
user-interface vty 0 4
protocol inbound all
rsa local-key-pair create
其次网络设备添加命令成功,需要退出当前Telnet登陆,使用SSH(版本SSH2)登陆,成功登陆后删除Telnet功能,具体实施命令参考如下:
aaa
local-user 原在用用户名 service-type terminal ssh /**设置终端登录方式为SSH**/
user-interface vty 0 4
protocol inbound ssh/**设置验证方式仅为SSH**/
ip ssh server /**开启SSH服务**/
telnet server disable/*采用SSH成功登陆后,执行该命令*/
检查完网络设备均采用SSH验证方式后,下一步需要编写SSH登录脚本指令,脚本指令同样借助SecureCRT软件完成,采用Telnet与SSH方式登录其中一个不同之处,SSH需要指定加密方式,指令执行前需要将用户名及密码指定,而Telnet只需要网络源IP地址,登录后根据屏幕关键字提示输入用户名与密码,下面笔者将两种登录方式命令对比如下。
Sub Main
crt.Screen.Synchronous = True
crt.Session.Connect"/TELNET 10.247.71.254"/**定义telnet连接设备**/
crt.Screen.WaitForString "Username:"/**等待关键字Username**/
crt.Screen.Send"admin_yc" & vbCr /**向屏幕发送admin_yc字符串**/
crt.Screen.WaitForString"Password:"/**等待关键字Password**/
crt.Screen.Send"mp2018" & vbCr /**向屏幕发送mp2018字符串**/
crt.Screen.waitForString ">"
/**上传备份信息至远程机器**/
crt.Screen.Send "tftp 10.84.31.2 put vrpcfg.zip AR01.zip" & vbcr
crt.Screen.waitForString ">"
crt.Screen.Send"quit" & vbcr
crt.Session.Disconnect
crt.Screen.Synchronous = False
End Sub
Sub Main
crt.Screen.Synchronous = True
dim host,user,passwor d,login
Str /**定义变量**/
host = "10.247.71.254" /**定义网络设备地址**/
user = "admin_yc" /**赋值登录用户名**/
password ="mp2019"/**赋值登录密码**/
/**定义SS2登录方式,3DES加密方式 MD5摘要**/
loginStr = "/SSH2 /L" & user & " /PASSWORD "& password & " /C 3DES /M MD5 " & host
/**SSH连接**/
crt.Session.Connect loginStr
crt.Screen.waitForString ">"
/**上传备份信息至远程机器**/
crt.Screen.Send "tftp 10.84.31.2 put vrpcfg.zip AR01.zip" & vbcr
crt.Screen.waitForString ">"
crt.Screen.Send"quit" & vbcr
crt.Session.Disconnect
crt.Screen.Synchronous = False
End Sub
编写完SSH脚本自动登录指令后,就需要开始编写脚本的批交易执行命令,批交易编写的思路为打开3CServer服务器,开启SercureCRT,执行vbs脚本命令,执行完毕关闭SecureCRT软件与3CServer服务器,按当前日期指定位置生成文件夹,并将备份的配置文本,剪切到按日期生成的文件夹中,以记事本的形式编写完毕后,另存为文件以*.bat的格式生成可执行批交易。
完整的代码可参考《网络安全和信息化》2018年5月刊登的“网络配置定时备份”,下面为脚本部分关键代码:
.........
rem 打开3CServer服务器
start "" "C:Program Files3Com3CServer.exe"
start "" "C:Program FilesSecureCRTSecureCRT.EXE" /script D:SecureScriptAR01备份脚本.vbs
.........
SSH网络自动登录脚本编写完成后,下一个问题就是如何触发这个批交易,让它每周能够定时执行,可以通过很多备份软件执行,而借助Windows任务计划不下载任何软件,能够轻松完成批交易的触发。因该部分内容与笔者发表的“网络配置定时备份”一样,因而该部分省略详情可参考《网络安全和信息化》2018年5月刊。
网络安全采用SSH验证登录后,虽繁琐但安全性大大提高,亦能通过脚本指令完成整个相对复杂的登录过程,特别针对核心交换设备均需要采用SSH验证方式,自动化同时又能提供安全,而且自动化备份过程除了与Telnet执行脚本指令不同外,其他批交易指令的编写及Windows的任务计划基本相同,能轻松实现网络设备高安全的自动备份,减少网络管理员的运维任务。