Назад | Перейти на главную страницу

Параметр конфигурации MaxStartups и MaxSessions для ssh-соединений?

Я копирую файлы из machineB и machineC в machineA поскольку я запускаю свой сценарий оболочки ниже на machineA.

Если файлов нет в 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

Я не думаю, что нагрузка на 10 параллельных подключений высока для ssh. я предполагаю, что у вас есть беспарольный доступ, проверьте, нет ли ключевой проблемы

for i in `echo MachineA MachineB MachineC`
   do 
    echo testing $i
    ssh -v $i exit
  done

Проверьте /etc/hosts.deny и /etc/hosts.allow на MachineB и MachineC и посмотрите, разрешено ли соединение с MachineA