从现有的虚拟机建立vagrant box ,再利用新建立的box建立虚拟机

本人使用的虚拟机provider是virtualbox,OS是centos7web

 

建立本身的virtualbox前,须要在virtualbox上已经搭建了一个虚拟机。以下为已经搭建好的虚拟机,虚拟机名称为cusbox_vb1vim

 

 

利用已经搭建好的虚拟机就能够建立本身的vagrant box。建立box以前须要先关闭虚拟机。centos

建立vagrant box

vagrant package --base 虚拟机的名字 --output  要建立的box的名字

如:vagrant package --base cusbox_vb1 --output cusbox

 

  

 新建立的box位于执行vagrant命令时所在的目录安全

新建立的box文件以下服务器

 

 

 

添加vagrant box 到默认目录

vagrant box 的默认目录为~/.vagrant.d/boxes, 其中~为用户家目录。less

要使用vagrant box建立虚拟机须要先将建立好的box添加到默认目录中ssh

 

vagrant box add 添加后的box名  要添加的box名
vagrant box add cusbox ./cusbox 

 

 

 

 

查看默认目录中的全部box

添加后能够到默认目录(~/.vagrant.d/boxes)下查看,能够发现cusbox文件夹已经被添加编辑器

 

 

 

也可使用vagrant box list命令查看默认目录下的全部boxide

vagrant box list

  

 

 

 

 

初始化vagrant环境,生成vagrantfile

将box添加到默认目录后就能够初始化,如下命令执行后就会生成Vagrantfile文件this

vagrant init box名称  
vagrant init cusbox

 

  

启动虚拟机

vagrant up

 

  

此时,虚拟机虽然能够启动,但没法认证,情况以下,这是由于没有配置ssh密钥

 

 

 

 

配置SSH密钥

 

上面的缘由是宿主机的默认私钥错误致使认证失败,解决方式以下:

 

 1,宿主机先执行vagrant ssh-config 查看私钥默认路径以便修改。

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2221
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/myvagrant/mkbox/Borg-web/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

 

  

IdentityFile即为密钥所在路径

 

vagrant up以后,会生成.vagrant目录,将现有的private_key复制到默认路径中去.vagrant\machines\default\virtualbox/private_key,

 

vagrant halt关闭后再vagrant up从新启动,这时就能够正常启动,并能经过vagrant ssh命令登陆到虚拟机。

 

虚拟机的公钥通常是位于/home/vagrant/.ssh目录中authorized_keys文件中,

能够在虚拟机中的 /etc/ssh/sshd_config配置文件来查看ssh服务器公钥的保存位置

cat /etc/ssh/sshd_config
#PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys

 

查看以下authorized_keys中的公钥

 

[vagrant@localhost .ssh]$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDa/VjIVZGQaTrPC1+k805wOJ+KGoLmwdLURHKT1RhhbNfBl1NYgbsZdTHAoE+nX1ksaM4p0yzFhDXxbiIYgJhg7gHkDHQpqzYXjZwZi9kLokxgA+gNfCu4HzDBFoOj2V0DaMEYnWRgHfpTR4Gw5brrfObwtkWy6iuNCok4a/j0Gpj16kfidTwOjYmGsfS7pGfQ+P9e9XUysQ9909MpT7rA30jeNbNN0gYr2p6M50wpXjyZLiTyMN+r1wq+oH3zSQ6dPmWu3cqyQlX7554sJDDGpmE8K4uGFgHmh+1neCoe0UWku3eYUcZKp5FnkfvKPVNHuW4lzY7IwKHsjWQ7q92Z vagrant
[vagrant@localhost .ssh]$ 

 

  

2.若是没有现成的公钥和私钥,可使用ssh-keygen命令生成

ssh-keygen

会生成以下两个文件id_rsa 和 id_rsa.pub,前一个为私钥文件,后一个为公钥文件,将此私钥文件的内容覆盖宿主机的默认文件便可解决认证问题。

即用私钥id_rsa的内容覆盖.vagrant\machines\default\virtualbox/private_key的内容

并将公钥id_rsa.pub的内容添加到虚拟机 ~/.ssh/authorized_keys中去,可使用以下命令

cat id_rsa.pub >> authorized_keys

在Liunx环境下, 若是要查看、复制私钥、公钥, 以及authorized_keys等文件, 不要使用vim等编辑器打开, 由于它会产生没必要要的回车;

应该经过cat、more、less等查看命令把内容打印到终端上, 再做查看、复制等操做.

 

另外,为了让私钥文件和公钥文件可以在认证中起做用, 须要确保权限的正确性:

① 对于.ssh目录以及其内部的公钥、私钥文件, 当前用户至少要有执行权限, 其余用户最多只能有执行权限.

② 不要图省事设置成777权限: 太大的权限不安全, 并且数字签名也不支持这种权限策略.

③ 对普通用户, 建议设置成600权限: chmod 600 authorized_keys id_rsa id_rsa.pub;

④ 对root用户, 建议设置成644权限: chmod 644 authorized_keys id_rsa id_rsa.pub.

 

 

由于在认证搞定以前是没法经过vagrant ssh登陆的,因此经过virtual box自己的客户端功能登陆用户名和密码都是vagrant,登陆后就能够利用ssh-keygen生成公钥和私钥了

 

 

登陆到虚拟机

 

 

vagrant ssh
相关文章
相关标签/搜索