本人使用的虛擬機provider是virtualbox,OS是centos7web
建立本身的virtualbox前,須要在virtualbox上已經搭建了一個虛擬機。以下爲已經搭建好的虛擬機,虛擬機名稱爲cusbox_vb1vim
利用已經搭建好的虛擬機就能夠建立本身的vagrant box。建立box以前須要先關閉虛擬機。centos
vagrant package --base 虛擬機的名字 --output 要建立的box的名字 如:vagrant package --base cusbox_vb1 --output cusbox
新建立的box位於執行vagrant命令時所在的目錄安全
新建立的box文件以下服務器
vagrant box 的默認目錄爲~/.vagrant.d/boxes, 其中~爲用戶家目錄。less
要使用vagrant box建立虛擬機須要先將建立好的box添加到默認目錄中ssh
vagrant box add 添加後的box名 要添加的box名
vagrant box add cusbox ./cusbox
添加後能夠到默認目錄(~/.vagrant.d/boxes)下查看,能夠發現cusbox文件夾已經被添加編輯器
也可使用vagrant box list命令查看默認目錄下的全部boxide
vagrant box list
將box添加到默認目錄後就能夠初始化,如下命令執行後就會生成Vagrantfile文件this
vagrant init box名稱
vagrant init cusbox
vagrant up
此時,虛擬機雖然能夠啓動,但沒法認證,情況以下,這是由於沒有配置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