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
现在你得到一个功能齐全的密码,不需要从 master 到 client 的 ssh。然而mpich
还是失败了。
我所做的额外步骤是将 public 密钥复制到 ~/.ssh/authorized_keys
文件,在 master 和 client 上。所以从两台服务器执行这个命令:
sudo cat .ssh/id_rsa.pub >> .ssh/authorized_keys
然后确保来自客户端和服务器的/etc/ssh/sshd_config
文件具有以下配置:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
从 client 和 master
重新启动 ssh
服务
sudo systemctl restart ssh
就是这样,mpich
现在可以正常工作了。
添加
package-lock.json
在“.gcloudignore 文件”中。
然后重新部署。
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
现在你得到一个功能齐全的密码,不需要从 master 到 client 的 ssh。然而mpich
还是失败了。
我所做的额外步骤是将 public 密钥复制到 ~/.ssh/authorized_keys
文件,在 master 和 client 上。所以从两台服务器执行这个命令:
sudo cat .ssh/id_rsa.pub >> .ssh/authorized_keys
然后确保来自客户端和服务器的/etc/ssh/sshd_config
文件具有以下配置:
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
从 client 和 master
重新启动ssh
服务
sudo systemctl restart ssh
就是这样,mpich
现在可以正常工作了。
添加
package-lock.json
在“.gcloudignore 文件”中。
然后重新部署。