在Vagrant多机设置中配置SSH密钥

92次阅读
没有评论

问题描述

在Vagrant中有一个多机设置,包括3台应用服务器和1台Ansible控制主机。他希望能够在Ansible控制主机上运行ansible-playbook命令,但遇到了SSH连接问题,导致连接失败。用户希望在运行vagrant up之后,Ansible控制主机能够无需密码或额外的手动步骤即可连接到其他虚拟机。

解决方案

请注意以下操作可能会因版本差异而有所不同,执行前务必做好备份。

最佳解决方案

用户在Vagrantfile中的每个主机上生成SSH密钥对,然后将公钥分发到其他主机的authorized_keys文件中。这将允许主机之间使用SSH密钥进行连接,而无需密码。

以下是步骤:

  1. 在Vagrantfile所在的项目目录下打开终端。
  2. 执行以下命令以为每个主机生成SSH密钥对:
    bash
    ssh-keygen -t rsa -N "" -f <主机名>_rsa

    <主机名>替换为实际的主机名称,比如oracle-vmansible-vm

  3. 在Vagrantfile中添加以下配置,以将公钥复制到各个主机的authorized_keys文件中:
    ruby
    # 为ansible主机复制公钥
    config.vm.provision "file", source: "<主机名>_rsa.pub", destination: "/home/vagrant/.ssh/authorized_keys"

    <主机名>替换为每个主机的名称。

  4. 最后,执行以下命令以启动虚拟机:
    bash
    vagrant up

通过执行以上步骤,您将为每个主机生成了SSH密钥对,并在Ansible控制主机上配置了其他主机的公钥,从而实现了主机之间的无密码连接。

其他解决方案

上述解决方案是最简单且常见的方法,但也有其他方法可以实现类似的目标。以下是其中一种方法:

  • 在Vagrantfile中为每个主机生成SSH密钥对。
  • 将Ansible主机的公钥分发到其他主机的authorized_keys文件中,可以使用Vagrant的config.vm.provision "file"配置。
  • 使用Vagrant的shell provisioner在其他主机上添加SSH密钥对。

然而,根据您的需求和安全性要求,选择适合您情况的解决方案。

请注意,由于Vagrant、操作系统版本以及其他因素可能会导致操作步骤略有不同,请在执行操作之前确保备份您的数据。

总结

通过生成SSH密钥对并将公钥分发到各个主机的authorized_keys文件中,您可以在Vagrant多机设置中实现主机之间的无密码连接。这将提高开发和测试过程的便利性,同时也可以根据安全性要求进行适当的配置。

请确保在执行操作之前理解您的环境和需求,并谨慎操作。

正文完