google 基于计算引擎的 mpich 集群中的主机密钥验证失败

Host key verification failed in google compute engine based mpich cluster

TLDR:

我有 2 个 google compute engine 实例,我都安装了 mpich。 当我尝试 运行 样本时,我得到 Host key verification failed.

详细版本:

我已按照本教程完成此任务:http://mpitutorial.com/tutorials/running-an-mpi-cluster-within-a-lan/

我有 2 个 google compute engine 虚拟机 ubuntu 14.04(google 云帐户是试用版,顺便说一句)。我已经在两个实例上下载了这个版本的 mpich:http://www.mpich.org/static/downloads/3.3rc1 /mpich-3.3rc1.tar.gz 并且我使用这些步骤安装了它:

./configure --disable-fortran
sudo make
sudo make install

这是 /etc/hosts 文件在 master-节点上的显示方式:

127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
169.254.169.254 metadata.google.internal metadata
10.128.0.3 client
10.128.0.2 master
10.128.0.2 linux1.us-central1-c.c.ultimate-triode-161918.internal linux
1  # Added by Google
169.254.169.254 metadata.google.internal  # Added by Google

这是 /etc/hosts 文件在 client-节点上的显示方式:

127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
169.254.169.254 metadata.google.internal metadata
10.128.0.2 master
10.128.0.3 client
10.128.0.3 linux2.us-central1-c.c.ultimate-triode-161918.internal linux
2  # Added by Google
169.254.169.254 metadata.google.internal  # Added by Google

其余步骤涉及在两个节点上添加名为 mpiuser 的用户,并在节点之间配置无密码 ssh 身份验证。并在节点之间配置一个 cloud 共享目录。

配置工作到此为止。我已经将这个文件 https://raw.githubusercontent.com/pmodels/mpich/master/examples/cpi.c 下载到 /home/mpiuser/cloud/mpi_sample.c,这样编译它:

mpicc -o mpi_sample mpi_sample.c

并以 mpiuser:

身份登录时在主节点上发出此命令
 mpirun -np 2 -hosts client,master ./mpi_sample

我得到了这个错误:

Host key verification failed.

怎么了?我已经尝试解决此问题超过 2 天,但我无法获得有效的解决方案。

原来是我的 password less ssh 配置不正确。我创建了 2 个新实例并执行了以下操作以减少工作密码,从而获得该示例的工作版本。以下步骤是在 ubuntu server 18.04.

上执行的

首先,默认情况下,google 云上的实例 PasswordAuthentication 设置已关闭。在 客户端 服务器中执行:

sudo vim /etc/ssh/sshd_config

并将 PasswordAuthentication no 更改为 PasswordAuthentication yes。然后

sudo systemctl restart ssh

master 服务器生成一个 ssh 密钥:

ssh-keygen -t rsa -b 4096 -C "user.mail@server.com"

将生成的ssh密钥从master服务器复制到client

ssh-copy-id client

现在你得到一个功能齐全的密码,不需要从 masterclient 的 ssh。然而mpich还是失败了。

我所做的额外步骤是将 public 密钥复制到 ~/.ssh/authorized_keys 文件,在 masterclient 上。所以从两台服务器执行这个命令:

sudo cat .ssh/id_rsa.pub >> .ssh/authorized_keys

然后确保来自客户端服务器/etc/ssh/sshd_config文件具有以下配置:

PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

clientmaster

重新启动 ssh 服务
sudo systemctl restart ssh

就是这样,mpich 现在可以正常工作了。

添加

package-lock.json

在“.gcloudignore 文件”中。

然后重新部署。