如何阻止 telnet 会话超时?

如何阻止 telnet 会话超时?

我使用 telnet 连接到 Cisco 路由器。

连接每 3 分钟超时一次。

如何阻止我的 telnet 会话因超时而与路由器断开连接。

据我所知,putty 和 SecureCRT 可以定期发送 null 或转义字符以阻止会话(telnet 或 SSH)超时。

如何在没有第三方程序的 Linux 上执行此操作?启动终端时,我使用以下脚本作为启动脚本:

#!/usr/bin/expect -f

spawn telnet <Router IP Address>
expect -re "ogin: "
send "*******\n"
expect -re "assword:"
send "***********\n"
sleep 2
expect "Router>"
interact

答案1

interact的语句可以expect采用类似于该expect语句的成对模式和操作。特别是,您可以添加超时模式和发送操作。例如,

interact timeout 10 { send "date\r" }

会照常发送您输入的内容,但如果您 10 秒没有输入,它将发送字符串date和回车符。如果您在字符模式下使用 telnet,则只需发送一个空格后跟一个退格键即可保持连接处于活动状态,这不会中断您已键入的任何部分行:

interact timeout 150 { send " \b" }

答案2

telnet作为安全措施,您在 Cisco 端的会话有默认超时,而在 Linux 端则没有。

我建议不要将它们timeouts与 TCP keepalive 混淆。它们是针对控制台/操作员不活动的第 7 层超时。

我想说,出于安全考虑,您应该设置ssh会话而不是Cisco 路由器。telnet

如果您需要,您可以在思科端执行的配置之一ssh是:

ip ssh timeout 300

至于telnet,您可以将默认超时更改为:

r1# configure terminal
r1(config)# line vty 
r1(config-line)# exec-timeout 300

您还可以使用exec-timeout 0ip ssh timeout 0来避免在telnet或中超时ssh,但是这不被认为是良好的安全实践。 。

我还建议更改路由器的其他默认配置,即默认hostname.

相关内容