web-dev-qa-db-ja.com

ssh接続のMaxStartupsおよびMaxSessions構成パラメーター?

machineBで以下のシェルスクリプトを実行しているときに、machineCおよびmachineAからmachineAにファイルをコピーしています。

ファイルがmachineBにない場合は、確かにmachineCにあるはずです。そのため、最初にmachineBからファイルをコピーし、machineBにない場合は、machineCから同じファイルをコピーします。

GNU Parallelライブラリを使用してファイルを並列にコピーしていますが、正常に動作しています。現在、10個のファイルを並列にコピーしています。

以下は私が持っている私のシェルスクリプトです-

#!/bin/bash

export PRIMARY=/test01/primary
export SECONDARY=/test02/secondary
readonly FILERS_LOCATION=(machineB machineC)
export FILERS_LOCATION_1=${FILERS_LOCATION[0]}
export FILERS_LOCATION_2=${FILERS_LOCATION[1]}
PRIMARY_PARTITION=(550 274 2 546 278) # this will have more file numbers
SECONDARY_PARTITION=(1643 1103 1372 1096 1369 1568) # this will have more file numbers

export dir3=/testing/snapshot/20140103

find "$PRIMARY" -mindepth 1 -delete
find "$SECONDARY" -mindepth 1 -delete

do_Copy() {
  el=$1
  PRIMSEC=$2
  scp david@$FILERS_LOCATION_1:$dir3/new_weekly_2014_"$el"_200003_5.data $PRIMSEC/. || scp david@$FILERS_LOCATION_2:$dir3/new_weekly_2014_"$el"_200003_5.data $PRIMSEC/.
}
export -f do_Copy

parallel --retries 10 -j 10 do_Copy {} $PRIMARY ::: "${PRIMARY_PARTITION[@]}" &
parallel --retries 10 -j 10 do_Copy {} $SECONDARY ::: "${SECONDARY_PARTITION[@]}" &
wait    

echo "All files copied."

問題ステートメント:-

上記のスクリプトを使用すると、いつでも(いつでも)、この例外が発生します-

ssh_exchange_identification: Connection closed by remote Host
ssh_exchange_identification: Connection closed by remote Host
ssh_exchange_identification: Connection closed by remote Host

そして、私は通常、同時に開始するssh/scpが多すぎることが原因でエラーが発生していると思います。/etc/ssh/sshd_config:MaxStartupsとMaxSessionsの設定が低すぎると思います。

しかし、私の質問はそれがかなり低いサーバーですか? machineBおよびmachineCまたはmachineA?そして、どのマシンで数を増やす必要がありますか?

machineAでは、これは私が見つけることができるものであり、それらはすべてコメント化されています-

root@machineA:/home/david# grep MaxStartups /etc/ssh/sshd_config
#MaxStartups 10:30:60

root@machineA:/home/david# grep MaxSessions /etc/ssh/sshd_config

そしてmachineBmachineCでこれは私が見つけることができるものです-

[root@machineB ~]$ grep MaxStartups /etc/ssh/sshd_config
#MaxStartups 10

[root@machineB ~]$ grep MaxSessions /etc/ssh/sshd_config
#MaxSessions 10
4
arsenal

このコードを正しく理解していれば、これはあなたの問題だと思います:

do_Copy() {
  el=$1
  PRIMSEC=$2
  scp david@$FILERS_LOCATION_1:$dir3/new_weekly_2014_"$el"_200003_5.data \
    $PRIMSEC/. || \
    scp david@$FILERS_LOCATION_2:$dir3/new_weekly_2014_"$el"_200003_5.data \
    $PRIMSEC/.
}
export -f do_Copy

parallel --retries 10 -j 10 do_Copy {} \
    $PRIMARY ::: "${PRIMARY_PARTITION[@]}" &
parallel --retries 10 -j 10 do_Copy {} \
    $SECONDARY ::: "${SECONDARY_PARTITION[@]}" &
wait    

20個のscpを並行して実行していますが、マシンBとCはそれぞれ10個しか処理できません。

#MaxStartups 10

これらの平行線を5にダイヤルバックして、問題が解決するかどうかを確認します。マシンBとCのMaxStartupsの数を増やしたい場合は、次のようにすることもできます。

MaxStartups 15

また、BとCの両方でsshdサービスを必ず再起動してください。

$ Sudo service sshd restart

構成ファイルの変更の確認

-Tスイッチを介してテストモードでsshdを実行することにより、それらが機能していることを再確認できます。

$ Sudo /usr/sbin/sshd -T | grep -i max
maxauthtries 6
maxsessions 10
clientalivecountmax 3
maxstartups 10:30:100
8
slm

--sshdelayまたは--filter-hostsの使用を検討してください。

0
Ole Tange