我正在通过 Google Cloud 启动多个远程实例,并将scp
脚本发送到这些实例以运行它们并将结果scp
返回到我的本地计算机。一切开始顺利,但过了一段时间(大约 30 个实例之后),新实例无法将scp
文件返回到我的计算机,因为我收到错误:ssh_exchange_identification: Connection closed by remote host
。只有在我使用以下命令重置本地计算机的 ssh 后,此错误才会消失:
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
潜在的问题是什么?我该如何解决它?而不需要不断重置我的 ssh?
答案1
你可能正在运行 sshd最大创业公司限制:
最大创业公司
指定与 SSH 守护进程的最大并发未经身份验证连接数。额外的连接将被丢弃,直到身份验证成功或连接的 LoginGraceTime 到期。默认值为 10:30:100。
或者,可以通过指定三个冒号分隔的值 start:rate:full(例如“10:30:60”)来启用随机早期丢弃。如果当前有 start(10)个未经身份验证的连接,sshd(8) 将以 rate/100(30%)的概率拒绝连接尝试。如果未经身份验证的连接数达到 full(60),概率将线性增加,并且所有连接尝试都将被拒绝。
您可以尝试更改设置。在 MacOS 上,配置文件是/private/etc/ssh/sshd_config
。
或者,您可以安排将 ssh 连接错开到服务器,这样它们就不会同时进入。