“ssh root @ server”永远挂起
发布时间:2020-12-14 02:34:52 所属栏目:Linux 来源:网络整理
导读:有时我的ssh客户端将永远登录. 当服务器没有响应(重载,终止处理,……)时会发生这种情况.我的自动脚本将失败,因为ssh进程永远不会退出. 如果ssh在预定义的秒数后无法登录,是否有ssh配置值来设置超时以便失败? 我知道服务器端有旋钮,但我必须在客户端设置这个
有时我的ssh客户端将永远登录.
当服务器没有响应(重载,终止处理,……)时会发生这种情况.我的自动脚本将失败,因为ssh进程永远不会退出. 如果ssh在预定义的秒数后无法登录,是否有ssh配置值来设置超时以便失败? 我知道服务器端有旋钮,但我必须在客户端设置这个,因为sshd进程没有响应或响应不正确. 谢谢! 解决方法
我见过甚至设置ConnectTimeout都不起作用的情况.当使用自动ssh连接到大量服务器时,这可能会特别烦人.我的解决方案是在客户端使用一个包装程序,如果它没有连接并足够快地返回,则会终止ssh进程.像这样(在perl中):
$SshCmd = "ssh server.example.com uname -a"; $TimeOut = 120; eval { local $SIG{ALRM} = sub { # ignore SIGHUP here so the kill only affects children. local $SIG{HUP} = 'IGNORE'; kill 1,(-$$); print STDERR "ssh terminated,max run time of $TimeOut seconds exceeded.n"; }; alarm $TimeOut; system ($SshCmd) || die "failed to run $SshCmd: $!"; alarm 0; }; $SIG{HUP} = 'DEFAULT'; 设置$TimeOut秒的警报,并在超过警报时杀死子节点(ssh命令). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |