Проблема с паролем нескольких хостов при использовании mpirun

Таким образом, я запускаю параллельную программу на С ++, отправляя задания с компьютера с Ubuntu на удаленные хосты (также Ubuntu), командная строка, которую я использую на терминале, выглядит примерно так:

mpirun -np 4 --host host1,host2 program.exe

и затем следующая строка в терминале запрашивает пароль для обоих хостов одновременно:

noob@host1's password: noob@host2's password:

И это вызывает у меня некоторые проблемы. Есть ли способ заставить терминал запрашивать мои пароли один за другим?

2 ответа

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

  1. Создайте открытый ключ ssh на своей машине:

    ssh-keygen -t rsa
    

    Вас попросят ввести ключевую фразу, которую вам будет предложено ввести при первом запуске любой команды ssh после каждого входа в систему. Это означает, что для нескольких ssh или же scp Команды, вам нужно будет ввести его только один раз (не один раз для хоста, один раз для сеанса входа в систему). Тем не менее, вы можете оставить его пустым, чтобы иметь полный доступ без пароля.

  2. После того как вы сгенерировали свой открытый ключ, скопируйте его на удаленные компьютеры:

    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
Другие вопросы по тегам