如何自动设置 SSH 密钥的密码以在集群中运行 MPI 程序?

Posted

技术标签:

【中文标题】如何自动设置 SSH 密钥的密码以在集群中运行 MPI 程序?【英文标题】:How to automatically set passphrase of SSH key for running MPI program in a cluster? 【发布时间】:2016-03-02 09:04:15 【问题描述】:

我在一个有 4 个节点的 linux 集群(n1.a.com、n2.a.com、n3.a.com、n4.a.com)已登录 node 1 (n1.a.com).

现在我有一个名为“sample.out”的可执行文件,我想从 node 1 在集群上运行它。

我有 SSH 密钥 设置了 passphrase

我在“hosts.txt”中也有主机列表文件

n1.a.com:8
n2.a.com:8
n3.a.com:8
n4.a.com:8

所以,我正在运行以下命令:

mpiexec -n 32 -f hosts.txt ./sample.out

但是,运行上述命令时,所有其他 3 个节点都在同时要求 密码短语

 Enter passphrase for key '/home/a/.ssh/id_dsa': Enter passphrase for key
 '/home/a/.ssh/id_dsa': Enter passphrase for key '/home/a/.ssh/id_dsa':

现在在此处输入密码不起作用!它在输入密码时反复要求相同的内容。

我的查询

    有没有办法自动将密码传递给all 节点? (可能通过脚本) 或者,我是否必须使用 无密码 密钥? 有什么方法可以通过使用同样安装的“Torque Batch”管理器避免这种情况

一些可能对我的系统有用的信息:

Workload Manager :- Torque Batch System

>>mpich2 --version
HYDRA build details:
    Version:                                 1.4.1p1
    Release Date:                            Thu Sep  1 13:53:02 CDT 2011
    Process Manager:                         pmi
    Launchers available:                      ssh rsh fork slurm ll lsf sge manual persist
    Topology libraries available:              hwloc plpa
    Resource management kernels available:    user slurm ll lsf sge pbs
    Checkpointing libraries available:
    Demux engines available:                  poll select

【问题讨论】:

【参考方案1】:

为了避免输入密码,需要创建一个 ssh-agent 并添加密码,如下所示:

ssh-agent $SHELL 
ssh-add 

来源:MPICH 1 Documentation: Configuring with ssh

【讨论】:

以上是关于如何自动设置 SSH 密钥的密码以在集群中运行 MPI 程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过环境变量传递 ssh 密钥密码

如何在 CentOS / RHEL 上设置 SSH 免密码登录

如何在 Linux 中配置基于密钥认证的 SSH

ssh密钥认证

linux ssh免密码登录设置

生成 ssh 密钥并将 ssh 密钥复制到其他机器