Проблема с паролем нескольких хостов при использовании mpirun
Таким образом, я запускаю параллельную программу на С ++, отправляя задания с компьютера с Ubuntu на удаленные хосты (также Ubuntu), командная строка, которую я использую на терминале, выглядит примерно так:
mpirun -np 4 --host host1,host2 program.exe
и затем следующая строка в терминале запрашивает пароль для обоих хостов одновременно:
noob@host1's password: noob@host2's password:
И это вызывает у меня некоторые проблемы. Есть ли способ заставить терминал запрашивать мои пароли один за другим?
2 ответа
Я не знаю, есть ли способ заставить терминал запрашивать последовательно, но в любом случае, если вы подключаетесь через sshЛучшим решением было бы установить доступ без пароля.
Создайте открытый ключ ssh на своей машине:
ssh-keygen -t rsaВас попросят ввести ключевую фразу, которую вам будет предложено ввести при первом запуске любой команды ssh после каждого входа в систему. Это означает, что для нескольких
sshили жеscpКоманды, вам нужно будет ввести его только один раз (не один раз для хоста, один раз для сеанса входа в систему). Тем не менее, вы можете оставить его пустым, чтобы иметь полный доступ без пароля.После того как вы сгенерировали свой открытый ключ, скопируйте его на удаленные компьютеры:
ssh-copy-id -i ~/.ssh/id_rsa.pub noob@host1 ssh-copy-id -i ~/.ssh/id_rsa.pub noob@host2Если вам нужно сделать это для многих хостов, создайте файл с именами хостов или IP-адресами (по одному на строку) и запустите копирование их всех, используя цикл оболочки:
while read ip; do ssh-copy-id -i ~/.ssh/id_rsa.pub noob@$ip done < IPlistfile.txt
Для этого шага вам придется вручную вводить пароль для каждого IP-адреса, но как только вы это сделаете, вы сможете запускать свои задания без запроса пароля.
Если это не сработает, нам потребуется более подробная информация о том, как именно эта программа подключается к удаленным хостам.
Если вы используете MPICH1, вы можете получить помощь от этого метода.
Вместо записи host1,host2 после -np 4 вы можете добавить hosts в файл "machines.linux" в этом месте назначения:
home/user/mpich1/share
* если вы не установили mpich в домашнюю директорию, обратитесь к месту установки mpich
и откройте файл "machines.linux". Очистите содержимое файла и введите информацию о хостах с количеством ядер, которое вы хотите:
host1:4
host2:2
host3:2
Теперь вы используете mpirun просто:
mpirun -np 4 program.exe