SSH 연결을 위한 MaxStartups 및 MaxSessions 구성 매개변수?

SSH 연결을 위한 MaxStartups 및 MaxSessions 구성 매개변수?

에서 아래 쉘 스크립트를 실행하면 파일이 복사됩니다 machineB.machineCmachineAmachineA

파일이 없으면 machineB분명히 존재해야 하므로 machineC먼저 파일을 복사해 보고 machineB, 없으면 machineB에서 동일한 파일을 복사해 보겠습니다 machineC.

저는 GNU 병렬 라이브러리를 사용하여 파일을 병렬로 복사하고 있는데 잘 작동합니다. 현재 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

제가 찾을 수 있었던 machineB것은 바로 이것 입니다 -machineC

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

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

답변1

이 코드를 올바르게 이해했다면 이것이 문제라고 생각합니다.

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

그리고 sshdB와 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

답변2

--sshdelay 또는 --filter-hosts 사용을 고려하세요.

관련 정보