解决SSH使用故障
2017-03-09
在传输数据方面,比较常用的方式是使用FTP和SFTP。相比 FTP,SFTP 可以在传统不安全的网络环境中,实现传输双方的认证和双向数据加密,可以让网管员从远端安全地登录到本地网络设备上进行管理。但由于对SSH原理不了解,导致STelnet的配置错误和使用方法错误,使用STelent命令进行远程管理网络设备无法成功,无法使用SFTP进行远程传输配置文件和系统文件。
故障现象
如果不熟悉SSH协议或不理解配置方式方法,会遇到很多问题。
1.在生成RSA时,提示生成RSA失败,提示要求检查路由器名称。
2.配置STelnet相关命令,使用Tacacs对用户进行认证,配置完成后发现在登录时输入用户名密码后认证立刻掉线。
3.Windows中使用SSH可以正常登录路由器,而在Linux下使用SSH却无法正常登录路由器。
4.使用SSH使用远端认证方式进行认证无法成功,但是本地aaa认证却可以成功。
5.使 用SecureCRT工具进行SSH远程连接,连接弹出错误提示“A protocol error has occurred”。
6.使用SecureCRT工具进行SSH远程连接,输入用户和密码后显示黑框。
7.使用SecureCRT工具进行SSH远程连接,弹出错误提示“到会话x.x.x.x的连接失败:密钥交换失败。没有兼容的MAC。服务器支持 这 些 MAC :SHA-96,SHA1,MD5”。
8.使用SecureCRT工具进行SSH远程连接,提示RSA有效性公钥检查失败。
9.使用SecureCRT工具进行SSH远程连接,出现错误提示“Error:The number of SSH servers reached the upper limit”。
10.使用SecureCRT工具进行SSH远程连接,前期可以正常登录,但是最新登录却出现失败,出现报错提示:“An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full”。
SSH协议
SSH是一种网络安全协议,通过对网络数据加密,解决在一个不安全的网络环境中进行安全数据传输的问题。SSH协议是在TCP之上构建一个安全通道,属于应用层协议,标准端口为22。目前该协议有SSH1、SSH1.5和SSH2三个版本,其中SSH1.5向SSH1兼容,而SSH2与SSH1.5互不兼容。比较常用的两个安全应用方式是 STelnet和 SFTP,STelnet是Telnet的加密升级版,可以让网络管理员从远端安全登录到网络设备,提供交互式配置界面,所有的交互数据和命令都经过加密。SFTP是Secure FTP的简称,因为数据在传输过程中进行了加密,可以让网络管理员从远端安全地登录到网络设备上安全地进行文件管理。
SSH采用了C/S应用模式,连接协商过程有版本号协商、算法协商、密匙交换、认证阶段、会话请求、会话阶段等6个步骤。
故障原因
在了解了SSH协议的工作原理后,在处理各类SSH故障时就会比较得心应手。在配置完成后,故障的产生就发生在SSH的6个工作阶段。
对于故障一偶尔遇到,出现故障的原因一般是由于路由器操作系统的版本较低引起,因为一些老版本的操作系统在使用SSH生成RSA时,对设备名长度有要求,以华为路由器为例,其最大长度不得超过25位,超过时配置就会失败。
故障二是因为Tacacs认证配置错误导致,其原因是Tacacs未配置计费相关信息或未配置计费失败策略,导致路由器认为计费失败从而导致用户掉线。
故障三经常遇到,主要原因是密钥文件权限配置错误,导致SSHD服务无法启动。
故障四是因为路由器配置认证方式时出现错误,SSH认证可以有远端认证、aaa认证和Password认证,当用户使用远程认证时,其优先采用SSH User用户登录服务器去进行认证,当用户不存在或未配置SSH认证类型时,才会使用aaa方式等本地认证方式进行认证。但一般很少获知远程认证服务器上的用户信息,只需修改其默认认证方式为Password模式或指定SSH认证类型就可以解决这个问题。
故障五是客户端和服务器端SSH版本不匹配引起的,SSH共有SSH1和SSH2两个版本且两个版本之间不能互相兼容,当客户端和服务器端SSH两个版本不匹配时,会导致连接失败。
故障六出现这样的问题是因为生成的Key被转发,导致只能在后台运行,无法在前台显示。
故障七可能是应用连接软件未创建公钥,手动创建公钥后再连接网络设备未解决造成,也可能是在使用软件时,在MAC选项配置中选择了无。
故障八一般是会在首次登录SSH服务器端时出现,因为首次登录时客户端还没有保存SSH服务器端的RSA公钥,会对服务器的RSA有效性公钥检查失败,从而导致登录服务器失败。
故障九是因为秘钥对生成的数量超过了网络设备支持的数量上限,导致无法生成新的秘钥对,很多路由器只能保存不超过20个的RSA秘钥。
故障十根据其提示,可以很容易得知RSA秘钥不合法或过期。
解决SSH故障流程
首先,检查网络连接是否畅通,一般可以在客户端Ping服务器端的IP地址,检查客户端和服务器端之间的网络是否畅通,排除因网络故障导致SSH连接不能建立的可能性。
第二,检查服务器端是否开户SSH服务功能,如果服务器端未开启SSH服务功能,则客户端无法登录服务器,如果要使用SFtp功能,还需检查是否使能SFtp服务。
第三,检查版本是否匹配,如果客户端和服务器端之间的版本不能协商成功,则连接无法建立,可以使用display ssh server status命令查看服务器上的SSH版本。
第四,检查VTY用户界面配置是否正确,在客户端登录服务器端时,未提示用户是否认可该服务器身份,就退出了登录,且服务器端没有任何调试输出,则可能是由于服务器端的VTY用户界面配置不正确导致的。
第五,检查服务器公钥是否存在。客户端登录服务器端时,客户端通过数字签名的方法验证服务器的身份。如果客户端没有保存服务器的公钥或保存的服务器不正确,则服务器身份验证将会失败,从而导致客户端无法登录服务器。
第六,检查服务器端是否存在该用户。当客户端登录服务器时,提示用户反复输入密码,但就是认证不成功。则可能是服务器端不存在该用户。
第七,检查认证是否失败。认证失败,可检查密码不正确、用户已经被服务器记入黑名单、用户可以使用的服务类型设置不正确。
第八,检查SSH用户服务类型配置是否正确。SSH服务类型包括STelnet和SFtp两种,如果用户登录时使用的服务类型与服务器上配置的用户服务类型不一致,则用户登录会失败。
第九,检查用户登录是否超时。这个问题的原因是用户登录过程的时间超过了服务器设置的时间,一般是由服务器上设置的超时时间不合适导致。
第十,如果使用SFtp时,还要检查其目录配置是否正确,如果不正确会导致登录失败。
解决方法
有两种方法可以排除故障一。
一是对路由器的操作系统进行升级,很多路由器操作系统的最新版本对设备名长没有长度限制,升级后可以正常生成RSA。二是修改路由器的设备名长少于25位即可,但是当有的单位出于网络管理要求,强制要求设备名为固定名称且设备名长度超过25位时,可以使用方法一。解决故障二,只需在路由器配置Tacacs计费功能时,增加一条accounting start-fail online命令即可,其目的是用户计费失败时可以执行online命令,允许用户上线。
解决故障三只需修改/etc/ssh下文件权限,具体操作方法是在命令行依次运行#cd/etc/ssh(进入/etc/ssh目录),#chmod 600 ssh*key(修改密钥权限为可读可写),#service sshd start(启动sshd服务)。
解决故障四是在配置SSH时,增加一条ssh authentication default password命令即可,确保当远程认证失败或失效时可使用本地认证。也可以指定默认的认证方式,避免当远程认证服务器中对用户的账号信息没有认证类型时,出现认证失败的情况。
解决故障五,首先要了解路由器等网络设备是否支持SSH2,如果支持,可以在客户端使用SSH2,然后在路由器上设置SSH版本为2,如果不支持,那么客户端需要使用SSH1或SSH1.5进行连接。
解决故障六,一般是因为使用相应的软件,而这些软件因为配置不当造成显示不成功。以SecureCRT为例,软件中会有一个类似“Enable OpenSSH agent forwarding”的选项,只需不勾选此选项即可。
解决故障七,需要检查相应的SSH连接软件的公钥创建是否成功,其次再检查MAC配置中是否勾选SHA1、SHA1-96、MD5等选项即可解决。
解决故障八只需在SSH服务器端开启SSH客户端首次认证功能,不能SSH服务器端的RSA公钥进行有效性检查即可。在华为路由器中其配置命令为“ssh client first-time enable”。
解决故障九根据需要,需要手动删除一些无用或失效秘钥。
解决故障十只需重新生成RSA秘钥,在网络设备中执行类似“rsa local-key-pair creat 1024”的命令即可。
注意事项
在使用SSH协议时,会出现各种各样的故障,只有了解SSH原理后,排除故障时才能得心应手。
除了上述的一些故障,在使用SSH协议时还需要注意在日常使用中网络设备极易受到SSH攻击,当网络设备受到SSH攻击时,网络设备的CPU占用率会大大增加,严重时会造成网络故障。此外,攻击者会利用SSH协议进行连续的非授权登录尝试,很可能导致缓冲区溢出或DoS攻击,在日常安全的特别是物理隔离局域网络中,不建议使用SSH协议,必要时可以配置禁止用户SSH登录。在必须使用SSH协议时,可以修改SSH的默认协议端口,以增加其安全性。
另外,使用SSH协议也不是百分百安全,因其认证方式和加密机制多样,在使用时,要根据网络环境,风险等级和风险内容合理确定认证方式和加密机制,如果对安全要求高级别高的网络设备,采用了简单的认证方式和加密机制,就不安全了。