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 です。
または、コロンで区切られた 3 つの値 start:rate:full (例: "10:30:60") を指定して、ランダムな早期ドロップを有効にすることもできます。sshd(8) は、現在 start (10) の認証されていない接続がある場合、rate/100 (30%) の確率で接続試行を拒否します。確率は直線的に増加し、認証されていない接続の数が full (60) に達すると、すべての接続試行が拒否されます。
設定を変更してみてください。MacOS の場合、設定ファイルは です/private/etc/ssh/sshd_config
。
あるいは、サーバーへの SSH 接続をずらして、すべての接続が同時に行われないようにすることもできます。