我使用aws java sdk启动EC2实例(运行Ubuntu 12.04)并在其上运行分布式工具,该工具使用openMPI在节点之间传递消息,openMPI使用SSH将节点相互连接。
问题是默认情况下EC2实例不会相互验证SSH连接,这个tutorial显示了如何通过生成密钥并将它们添加到节点来设置SSH,但是,当我尝试添加时使用命令
生成的从站密钥$ scp /home/mpiuser/.ssh/id_dsa.pub mpiuser@slave1:.ssh/authorized_keys
我仍然被许可拒绝。此外,在生成新密钥后,我无法使用从亚马逊获得的“.pem”密钥登录。
我对SSH密钥没有经验,但我希望能够通过某种方式配置每个EC2实例(首次创建时)以验证其他实例,例如通过将密钥复制到每个实例中。这是可能的吗?如何做到这一点?
P.S。:我可以在启动后连接到每个实例,并可以通过SSH在它们上执行任何命令。
答案 0 :(得分:0)
我找到了解决方案,我在图像(AMI)中添加了亚马逊私钥(.pem),用于创建EC2实例,我通过添加新的身份文件来更改/ etc / ssh / ssh_config文件/ p>
IdentityFile /path/to/the/key/file
这使得SSH在尝试连接到使用相同密钥创建的任何其他EC2实例时识别.pem私钥。
我还将StrictHostKeyChecking
更改为否,这会停止消息“无法建立主机xxx的真实性”,这需要用户进行交互才能继续连接到该主机。