從現有的虛擬機建立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
相關文章
相關標籤/搜索