Сервер запрашивает пароль, несмотря на то, что ключи ssh установлены при использовании Parallel: ForkManager - PullRequest
1 голос
/ 12 сентября 2011

Я не знаю, как лучше это выразить, но вот моя проблема: У меня есть две машины, Клиент A и Сервер B. Мой клиент прошел проверку подлинности и не нуждается в пароле для обычного подключения к B. Когда я делаю SSH от A до B, он входит в систему без пароля.

Тем не менее, Когда я использую несколько параллельных соединений, используя модуль Parallel :: Forkmanager, иногда запрашивается пароль.

Вот код, который я использую для подключения: Код: используйте Parallel: ForkManager;

my $pm=new Parallel::ForkManager(15);
foreach my $processNumber (1 .. 15) {
$pm->start and next;
<subroutine to ssh to the server and perform some actions>;
$pm->finish;
}
$pm->wait_all_children;

Каждый процесс имеет еще около 5000 итераций создания нескольких таблиц и т. Д. Периодически он запрашивает пароль для аутентификации клиента, когда он обычно этого не делает.

Мои ssh-ключи сохраняются на сервере.

В чем может быть проблема? Любая помощь приветствуется.

1 Ответ

1 голос
/ 03 ноября 2011

Я обычно видел такое поведение, когда вы достигаете максимального количества одновременных соединений, ожидающих аутентификацию на sshd удаленного сервера. По умолчанию установлено значение 10, и поскольку вы используете 15 разветвленных детей, вы, безусловно, иногда можете достигать этого предела.

Некоторые решения:

  1. Изменить /etc/ssh/sshd_config на сервере и увеличить MaxStartups
  2. Кроме того, вы можете попробовать добавить sleep $processNumber; вверху цикла foreach, чтобы убедиться, что соединения расположены в шахматном порядке.
  3. Или просто уменьшите количество процессов с 15 до значения 10 или ниже.

Не имеет отношения, но вы, вероятно, захотите вызвать ssh с -O BatchMode=yes в командной строке, чтобы он никогда не запрашивал в интерактивном режиме подтверждения пароля или ключа. Вместо этого он завершится с ошибкой и завершится с ненулевым значением, что облегчит вашему сценарию правильное обнаружение и обработку ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...