我正在使用aws java sdk启动EC2实例(运行Ubuntu12.04),并在它们上运行一个分布式工具,该工具使用openMPI进行节点之间的消息传递,openMPI使用SSH将节点连接起来。
问题在于,默认情况下,EC2实例不会针对SSH连接相互进行身份验证,这个tutorial展示了如何通过生成密钥并将其添加到节点来设置SSH,但是,当我尝试使用以下命令将生成的密钥添加到从节点时
$ scp /home/mpiuser/.ssh/id_dsa.pub mpiuser@slave1:.ssh/authorized_keys
我还是被拒绝了。此外,在生成新密钥后,我无法使用从亚马逊获得的".pem“密钥登录。
我没有SSH密钥的经验,但我希望有一些方法来配置每个EC2实例(当它第一次创建时)来对其他实例进行身份验证,例如通过将密钥复制到每个实例中。这是可能的吗?如何实现?
附言:我可以在每个实例启动后连接到它,并且可以通过SSH在它们上执行任何命令。
发布于 2013-07-21 14:05:20
我找到了解决方案,我在用于创建EC2实例的映像(AMI)中添加了亚马逊私钥(.pem),并通过添加新的标识文件更改了/etc/ssh/ssh文件
IdentityFile /path/to/the/key/file
这使SSH在尝试连接到使用相同密钥创建的任何其他EC2实例时能够识别.pem私钥。
我还将StrictHostKeyChecking
更改为no,这会阻止消息"authenticity of host xxx can't be established“,该消息要求用户交互才能继续连接到该主机。
https://stackoverflow.com/questions/17720909
复制