使用vagrant啓動虛擬機時,出現以下警告:php
vagrant up default: Warning: Authentication failure. Retrying...
受權失敗主要緣由:html
虛擬機獲取不到物理機的公鑰(有疑問的小夥伴,建議先了解一下SSH)git
將公鑰複製到虛擬機vagrant用戶家目錄下的authorized_keys文件中web
Vagrantfile中指定物理機當前用戶的私鑰路徑shell
以windows系統爲例,查看當前登陸用戶的文件夾下是否包含.ssh文件夾,以及.ssh文件夾下是否包含id_rsa(私鑰)、id_rsa.pub(公鑰)兩個文件apache
.ssh文件夾文件以下:
vim
注意:必須打開 【顯示隱藏的文件、文件夾或驅動器】才能看到.ssh文件夾
windows
若是已經包含id_rsa(私鑰)、id_rsa.pub(公鑰)兩個文件則可跳過步驟一。若是沒有兩個文件則繼續往下看ruby
生成公鑰和私鑰有多種方法,咱們使用最經常使用的辦法。開發者通常都會安裝git。直接使用git bash生成一下就行了bash
一路回車,完成後,記住下面的地址
這兩個文件的含是:首先,他們是1對的,二者缺1不可,id_rsa 是私鑰,id_rsa.pub是公鑰
小夥伴可能奇怪,vagrant都報錯了,怎麼還能進入虛擬機?沒錯!其實此時虛擬機已經啓動完畢了,只不過此時不能接受vagrant的命令,也沒法設置共享目錄。
通常來講默認的用戶名是vagrant,密碼也是vagrant。
查看是否有authorized_keys文件
[vagrant@localhost .ssh]$ pwd /home/vagrant/.ssh [vagrant@localhost .ssh]$ ls -al total 8 drwx------ 2 vagrant root 28 Jul 26 2016 . drwx------. 8 vagrant vagrant 4096 Nov 6 11:02 .. -rw------- 1 vagrant vagrant 786 Jul 26 2016 authorized_keys [vagrant@localhost .ssh]$
若是authorized_keys文件不存在,則本身手動建立一下。
注意authorized_keys 文件的權限是600,全部者是vagrant,所屬組也是vagrant
[vagrant@localhost .ssh]$ touch authorized_keys [vagrant@localhost .ssh]$ chmod 600 authorized_keys
若是已經存在authorized_keys文件,複製物理機公鑰文件id_rsa.pub的內容,粘貼到authorized_keys文件中。每一個公鑰只佔一行
注意:公鑰內容只佔一行
例如個人authorized_keys文件中有兩個公鑰
[vagrant@localhost .ssh]$ vim authorized_keys 1 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDlo4N35+9OM2UCAC82E4RtiqROZU/jI6bgg76QAA56cGdLwk4CNZzbn309nNRtO7tyBtWCyFx2AOn3Hd8hIFWiokMgxlf3eSjowT9dZqmbhGrYzAkPq r63rpHUX7M4FVjMLtoREqrGbBQZ7uZItViKeXXXl7bsGOUserLchzi+p3PJgjmw5j6ea+Kj2P7EThvcevoEPLcwGyckCTEiYo8nJ21K5bkmKCi2F8kaaJ9zbIeJ/2woayUkoZeufNo3A/gZx2bvHYAiFT 4RYLDwjrspq7pQS5Cs83YUGvolPKQfCrJRH3N+sNaeHx1NzEULMvQNxgEsFIVpi5k7OBIf4BY/ vagrant 2 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCov9Z/3qVWXkxLS6koRWxNu9lEt+e0+/6M+XCtDx7qWiCCZovNSCbKAHO3gwCV3myIyoiP/9bv2d0Sw18d/5BMYHWT4l85IZdF87no0Euu8Yt1w4BEU rCbL0jrDXHlVBhMyCeETr7BKDlM56meiNMo/PvNuN3qcp6tukLUXgrFRQ24hgg1mMvqQ0Km5UHYnHr+Vygc3udEVEEG5Px+04y6ap8gRZg7tKVgckdXZ7+1rNJtTXqR81uXXXbyown4eoccqsUTOK3iUs 2GdFwH/t3unbCSLu13UKDcLGG6hKG/x4aA1itIl3NdbzODgbte8UGXlifomayG+PTaf1tvb+n/ dc@GZ-Design003
config.ssh.private_key_path = "C:/Users/dc/.ssh/id_rsa" config.ssh.forward_agent = true
Vagrantfile所有配置內容以下:
# -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure(2) do |config| config.vm.box = "web" config.ssh.private_key_path = "C:/Users/dc/.ssh/id_rsa" config.ssh.forward_agent = true # config.winnfsd.logging="on" # config.winnfsd.uid=1 # config.winnfsd.gid=1 # config.vm.synced_folder "./","/vagrant",type:"nfs" config.vm.define :web do |web| web.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--name", "web", "--memory", "2048", "--cpus","2"] end web.vm.box = "web" web.vm.hostname = "web" web.vm.synced_folder "./","/vagrant" # web.vm.network:private_network, ip: "192.168.33.11" web.vm.network "public_network" end config.vm.define :php do |php| php.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--name", "php", "--memory", "512"] end php.vm.box = "php" php.vm.network:private_network, ip: "192.168.33.10" # php.vm.network "public_network", ip: "192.168.33.10" php.vm.synced_folder "./","/vagrant",type:"nfs" php.winnfsd.logging="on" php.winnfsd.uid=1 php.winnfsd.gid=1 php.vm.synced_folder "./","/vagrant" end config.vm.define :swoole do |swoole| swoole.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--name", "swoole", "--memory", "512"] end swoole.vm.box = "swoole" # swoole.vm.network:private_network, ip: "192.168.33.12" swoole.vm.network "public_network", ip: "192.168.33.12" # swoole.vm.synced_folder "./","/vagrant",type:"nfs" swoole.vm.synced_folder "./","/vagrant" end config.vm.define :master do |master| master.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--name", "master", "--memory", "512"] end master.vm.box = "master" master.vm.network "public_network" master.vm.synced_folder "./","/vagrant" end config.vm.define :slave do |slave| slave.vm.provider "virtualbox" do |v| v.customize ["modifyvm", :id, "--name", "slave", "--memory", "512"] end slave.vm.box = "slave" slave.vm.network "public_network" slave.vm.synced_folder "./","/vagrant" end end # The most common configuration options are documented and commented below. # For a complete reference, please see the online documentation at # https://docs.vagrantup.com. # Every Vagrant development environment requires a box. You can search for # boxes at https://atlas.hashicorp.com/search. # Disable automatic box update checking. If you disable this, then # boxes will only be checked for updates when the user runs # `vagrant box outdated`. This is not recommended. # config.vm.box_check_update = false # Create a forwarded port mapping which allows access to a specific port # within the machine from a port on the host machine. In the example below, # accessing "localhost:8080" will access port 80 on the guest machine. # config.vm.network "forwarded_port", guest: 80, host: 8080 # Create a private network, which allows host-only access to the machine # using a specific IP. # config.vm.network "private_network", ip: "192.168.33.10" # Create a public network, which generally matched to bridged network. # Bridged networks make the machine appear as another physical device on # your network. # config.vm.network "public_network" # Share an additional folder to the guest VM. The first argument is # the path on the host to the actual folder. The second argument is # the path on the guest to mount the folder. And the optional third # argument is a set of non-required options. # config.vm.synced_folder "../data", "/vagrant_data" # Provider-specific configuration so you can fine-tune various # backing providers for Vagrant. These expose provider-specific options. # Example for VirtualBox: # # config.vm.provider "virtualbox" do |vb| # # Display the VirtualBox GUI when booting the machine # vb.gui = true # # # Customize the amount of memory on the VM: # vb.memory = "1024" # end # # View the documentation for the provider you are using for more # information on available options. # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies # such as FTP and Heroku are also available. See the documentation at # https://docs.vagrantup.com/v2/push/atlas.html for more information. # config.push.define "atlas" do |push| # push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME" # end # Enable provisioning with a shell script. Additional provisioners such as # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the # documentation for more information about their specific syntax and use. # config.vm.provision "shell", inline: <<-SHELL # sudo apt-get update # sudo apt-get install -y apache2 # SHELL
在物理機的命令行重啓虛擬機
vagrant reload XXXX