2016-04-15 17 views
1

私はリモートシステムからファイルを引っ張って、十数回の並列 "scp"を実行しようとしている小さなアプリケーションを持っています。通常、正常に動作します。 場合によっては、1つまたは2つのscp実行が静かに終了することがあります。 (Linuxからの引っ張っている場合、「静か」。HP-UXから引っ張った場合、私は、ピアによって接続がリセットのようなメッセージ を得る。)並列に複数のscpsを実行すると、scpが散発的に失敗するのはなぜですか?

障害が発生したとき、私はその後、私のscpコマンドに「-v」を追加した場合私は "ssh_exchange_identification:read:接続でリセットされた接続" (Linuxの場合は、HP-UXで-vを試していない)を取得しています。

Executing: program /usr/bin/ssh host wilbur, user (unspecified), command scp -v -p -f /home/sieler/source/misc/[p-q]*.[ch] 
OpenSSH_6.9p1, LibreSSL 2.1.8 
debug1: Reading configuration data /etc/ssh/ssh_config 
debug1: /etc/ssh/ssh_config line 51: Applying options for * 
debug1: Connecting to wilbur [10.84.3.61] port 22. 
debug1: Connection established. 
debug1: identity file /Users/sieler/.ssh/id_rsa type 1 
debug1: key_load_public: No such file or directory 
debug1: identity file /Users/sieler/.ssh/id_rsa-cert type -1 
debug1: key_load_public: No such file or directory 
debug1: identity file /Users/sieler/.ssh/id_dsa type -1 
debug1: key_load_public: No such file or directory 
debug1: identity file /Users/sieler/.ssh/id_dsa-cert type -1 
debug1: key_load_public: No such file or directory 
debug1: identity file /Users/sieler/.ssh/id_ecdsa type -1 
debug1: key_load_public: No such file or directory 
debug1: identity file /Users/sieler/.ssh/id_ecdsa-cert type -1 
debug1: key_load_public: No such file or directory 
debug1: identity file /Users/sieler/.ssh/id_ed25519 type -1 
debug1: key_load_public: No such file or directory 
debug1: identity file /Users/sieler/.ssh/id_ed25519-cert type -1 
debug1: Enabling compatibility mode for protocol 2.0 
debug1: Local version string SSH-2.0-OpenSSH_6.9 

「悪い」と「良い」:ここでは

は「不良」 実行し、「良い」の実行が示さ発散するポイントとの典型的な実験のための「SCP -v」出力、ですランは...そして、この時点までに一致し

悪い:

ssh_exchange_identification: read: Connection reset by peer 

グッド:

debug1: Remote protocol version 2.0, remote software version OpenSSH_5.3 
debug1: match: OpenSSH_5.3 pat OpenSSH_5* compat 0x0c000000 
debug1: Authenticating to wilbur:22 as 'sieler' 
debug1: SSH2_MSG_KEXINIT sent 
debug1: SSH2_MSG_KEXINIT received 
debug1: kex: server->client aes128-ctr [email protected] none 
debug1: kex: client->server aes128-ctr [email protected] none 
... 

OS X 10.11.4を実行しているスクリプトやscpを実行するための通常のホストマシンは、Mac/Linux/HP-UXのいくつかの組み合わせ に再現されていますこれはMacまたはHP-UX固有の問題です)。

IIRCの場合、scpを使用してLinuxからMacに接続すると、 という問題が発生し、HP-UXからMacに移行し、LinuxからHP-UXに移行します。
MacまたはHP-UXからLinuxにプルしようとしたことはありません。

scp/ssh/opensshのパラレル使用が失敗することがありますか?

私は-dddとLinuxシステム上でsshdを実行する場合 最初scpがそれにアクセスする(scpは問題がない)、 および他の11回のscpの実行が失敗した後、その後、悪魔が停止します。

おかげ

+0

"MaxStartups"へのJakujeのポインタが私の問題を解決しました。 –

答えて

2

これはおそらくsshd_configにおける並列セッションの制限が原因で発生します。既定では、サーバーは「ランダム早期削除」を実行するように構成されています。これは、新しい接続を拒否することを意味します。責任オプションは、(男性sshd_configから)MaxStartups次のとおりです。

MaxStartups

は、SSHデーモンへの同時認証されていない接続の最大数を指定します。認証に成功するか、または接続のためにLoginGraceTimeが期限切れになるまで、追加の接続は切断されます。デフォルトは10:30:100です。

また、「start:rate:full」(たとえば「10:30:60」)という3つのコロンで区切られた値を指定することで、ランダム早期ドロップを有効にすることができます。sshd(8)は、現在 "開始"(10)の認証されていない接続がある場合、 "rate/100"(30%)の確率で接続の試行を拒否します。確率は直線的に増加し、認証されていない接続の数が「完全」(60)に達すると、すべての接続試行が拒否されます。

期待した接続量よりも大きな値にバンプすると、問題が解決するはずです。それ以外の場合はをsshd_configに設定して、システムログにさらに多くのログを表示することができます。


しかし同じサーバーに接続している、接続多重化を使用することをお勧めします。それは速くなり、あなたはこれらの問題を抱えません。 ControlMasterのオプションをssh_configにチェックするか、my similar answerにチェックを入れて、この「魔法」への素早い移動を確認してください。

関連する問題