【发布时间】:2017-05-05 08:51:57
【问题描述】:
我正在使用 Vagrant 运行 4 个虚拟机。我的 Vagrantfile 看起来像这样:
Vagrant.configure(2) do |config|
config.vm.box = "bento/centos-7.2"
config.vm.synced_folder "data", "/vagrant"
# Master1
config.vm.define :master1 do |m1|
m1.vm.hostname = "master1.mycluster"
m1.vm.network :private_network, ip: "192.168.0.12"
m1.vm.provider :virtualbox do |vb|
vb.memory = "8192"
end
m1.vm.network "forwarded_port", guest: 50070, host: 50070
end
# Other machines are defined in the same way
end
一切都运行良好,直到我不小心从项目目录中删除了 .vagrant 文件夹。
首先,我尝试将我的虚拟机 ID 放回 .vagrant/machines/${name}/virtualbox/id。运行 vagrant status 确实看到我的虚拟机已启动并正在运行,但我无法再通过 SSH 连接。
我寻找解决方案,但找不到,所以我决定销毁并重新启动我的虚拟机。可悲的是,vagrant up(或vagrant up --provision)命令在尝试 SSH 到 127.0.0.1:2222 时卡住了。它不应该尝试连接到 192.168.0.12:2222 吗?这是命令输出:
Bringing machine 'master1' up with 'virtualbox' provider...
==> master1: Importing base box 'bento/centos-7.2'...
==> master1: Matching MAC address for NAT networking...
==> master1: Checking if box 'bento/centos-7.2' is up to date...
==> master1: Setting the name of the VM: vagrant_master1_1493974030138_66977
==> master1: Clearing any previously set network interfaces...
==> master1: Preparing network interfaces based on configuration...
master1: Adapter 1: nat
master1: Adapter 2: hostonly
==> master1: Forwarding ports...
master1: 50070 (guest) => 50070 (host) (adapter 1)
master1: 61888 (guest) => 61888 (host) (adapter 1)
master1: 18080 (guest) => 18080 (host) (adapter 1)
master1: 9995 (guest) => 9959 (host) (adapter 1)
master1: 8787 (guest) => 8787 (host) (adapter 1)
master1: 8088 (guest) => 8088 (host) (adapter 1)
master1: 22 (guest) => 2222 (host) (adapter 1)
==> master1: Running 'pre-boot' VM customizations...
==> master1: Booting VM...
==> master1: Waiting for machine to boot. This may take a few minutes...
master1: SSH address: 127.0.0.1:2222
master1: SSH username: vagrant
master1: SSH auth method: private key
master1: Warning: Remote connection disconnect. Retrying...
master1: Warning: Authentication failure. Retrying...
不过,我可以通过ssh -p 2222 vagrant@127.0.0.1 连接到我的VM,并且SSH 文件夹似乎没有权限问题。
[vagrant@localhost ~]$ ls -la /home/vagrant/.ssh/
total 4
drwx------. 2 vagrant root 28 1 déc. 15:56 .
drwx------. 3 vagrant vagrant 90 1 déc. 15:57 ..
-rw-------. 1 vagrant root 409 1 déc. 15:56 authorized_keys
如何才能使用 Vagrant 再次运行虚拟机?
【问题讨论】:
-
127.0.0.1:2222是 vagrant 使用的正确 url,vagrant 没有在第一次运行 ssh 连接时在 VM 上设置 IP。你可以通过virtualbox连接到虚拟机吗? (vagrant/vagrant 作为用户/密码)并检查/home/vagrant/.ssh文件夹的权限 -
您需要 vnc 或其他东西来登录您的远程服务器并打开虚拟框 - 如果您需要检查 ssh 是否正确,则无法启动 ssh 连接
-
我已经能够使用一个简单的 SSH 命令连接到我的虚拟机,我编辑了我的问题来回答您的问题。权利似乎还可以。
-
不过,我认为您的问题将我引向了真正的问题:在尝试解决第一个问题时,我修改了
~/.vagrant.d/insecure_private_key。 VM~/.ssh/authorized_keys确实包含一个名为 vagrant insecure public key 的公钥,但它与新的私钥不对应。你知道这个公钥是从哪里来的吗?
标签: vagrant