我需要对网络中 20k+ 台机器(全部为 Linux)进行某种扫描,我使用 ssh 连接到每台机器,在其上运行一个小命令,然后收集输出。我运行并行线程,每台机器大约有 3k 到 4k 台机器。
问题是,对于某些机器,登录不起作用,在我看来,这表明机器配置不正确。SSH 大约需要一分钟才能超时,这一分钟会延迟扫描。
是否有任何选项可以减少 ssh 在结束连接尝试并显示消息之前必须等待的超时时间:
ssh: connect to host xxxxx port 22: Connection timed out
然后转到下一台机器?这将显著加快整体扫描速度,不仅是在太多机器上进行扫描时,甚至在少数机器上进行扫描时也是如此。
答案1
使用连接超时选项。您可以通过 -o 标志使用它。它以秒为单位接受参数。例如,要将超时时间设置为 3 秒,请使用以下命令:
ssh -o ConnectTimeout=3 username@hostname
注意:如果机器不在您的本地网络上,或者您的本地网络延迟较高,则应将超时时间保持在较高的值,因为延迟可能会影响初始连接。