Parâmetro de configurações MaxStartups e MaxSessions para conexões ssh?

4

Estou copiando os arquivos de machineB e machineC para machineA enquanto estou executando meu script de shell abaixo em machineA .

Se os arquivos não estiverem em machineB , eles devem estar em machineC , então tentarei copiar os arquivos de machineB primeiro, se ele não estiver em machineB , então tentarei copiando os mesmos arquivos de machineC .

Eu estou copiando os arquivos em paralelo usando a biblioteca GNU Parallel e está funcionando bem. Atualmente estou copiando 10 arquivos em paralelo.

Abaixo está o meu script de shell que eu tenho -

#!/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."

Descrição do problema: -

Com o script acima em algum momento (não toda vez) estou recebendo essa exceção -

ssh_exchange_identification: Connection closed by remote host
ssh_exchange_identification: Connection closed by remote host
ssh_exchange_identification: Connection closed by remote host

E eu acho que o erro geralmente é causado por muitos ssh / scp começando ao mesmo tempo. Isso me leva a acreditar em / etc / ssh / sshd_config: MaxStartups e MaxSessions estão muito baixos.

Mas a minha pergunta é em qual servidor é muito baixo? machineB e machineC ou machineA ? E em quais máquinas eu preciso aumentar o número?

Em machineA , isso é o que posso encontrar e todos são comentados -

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

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

E em machineB e machineC , isso é o que posso encontrar -

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

[root@machineB ~]$ grep MaxSessions /etc/ssh/sshd_config
#MaxSessions 10
    
por arsenal 12.06.2014 / 02:43

2 respostas

8

Se eu entendi este código corretamente, acredito que esse seja seu problema:

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    

Você está executando 20 scp em paralelo, mas as máquinas B & C só pode lidar com 10 cada:

#MaxStartups 10

Eu voltaria com essas linhas paralelas para dizer 5 e veria se isso resolve o problema. Se você quiser aumentar o número de MaxStartups nas máquinas B & C você poderia fazer isso também:

MaxStartups 15

E não se esqueça de reiniciar o serviço sshd em ambos B & C:

$ sudo service sshd restart

Confirmando modificações no arquivo de configuração

Você pode verificar se eles estão funcionando executando sshd no modo de teste usando a opção -T .

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

Considere o uso de --sshdelay ou --filter-hosts.

    
por 12.06.2014 / 17:54