Linux

ssh 連接的 MaxStartups 和 MaxSessions 配置參數?

  • September 13, 2017

當我在. machineB_machineC``machineA``machineA

如果文件不在那裡,machineB那麼它肯定應該在那裡,machineC所以我會先嘗試從那裡複製文件machineB,如果它不在那裡,machineB那麼我會嘗試從machineC.

我正在使用 GNU Parallel 庫並行複製文件,它工作正常。目前我正在並行複制 10 個文件。

下面是我的shell腳本 -

#!/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 設置得太低了。

但我的問題是在哪個伺服器上它很低?machineBmachineCmachineA? 我需要在哪些機器上增加數量?

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

如果我正確理解了這段程式碼,我相信這是你的問題:

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    

您正在scp並行執行 20 個,但機器 B 和 C 每個只能處理 10 個:

#MaxStartups 10

我會撥回那些平行線說5,看看是否能解決你的問題。如果您想增加MaxStartups機器 B 和 C 的數量,您也可以這樣做:

MaxStartups 15

並確保sshd在 B 和 C 上重新啟動服務:

$ sudo service sshd restart

確認配置文件修改

您可以通過開關sshd在測試模式下執行來仔細檢查它們是否正常工作。-T

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

引用自:https://unix.stackexchange.com/questions/136693