diff --git a/Vagrantfile b/Vagrantfile
index d9950f47785c751e1aec0dd2f062dbf2d29bed3e..0c424297a56b16d7313643b1e4177d3d991b0866 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -3,6 +3,9 @@
 
 Vagrant.configure("2") do |config|
 
+  # don't configure host-specific keys, config will use the user's key
+  config.ssh.insert_key = false
+
   config.vm.define "ohpc" do |ohpc|
     ohpc.vm.box = "centos/7"
     ohpc.vm.hostname = "ohpc"
@@ -20,19 +23,30 @@ Vagrant.configure("2") do |config|
       auto_correct: true
   end
 
-
   config.vm.provider :virtualbox do |vb|
     vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
     vb.memory = "2048"
   end
 
+  # define user's key and insecure default
+  # insecure default is required for initial provisioning
+  config.ssh.private_key_path = ["~/.ssh/id_rsa", "~/.vagrant.d/insecure_private_key"]
+  # append user's key to vagrant config to avoid overwrite of existing authorized_keys
+  # https://stackoverflow.com/a/31153912/8928529
+  config.vm.provision "ssh_pub_key", type: "shell" do |s|
+      ssh_pub_key = File.readlines("#{Dir.home}/.ssh/id_rsa.pub").first.strip
+      s.inline = <<-SHELL
+        echo #{ssh_pub_key} >> /home/vagrant/.ssh/authorized_keys
+      SHELL
+  end
+
   config.vm.provision "shell", inline: <<-SHELL
     if [ -f /vagrant/localenv.sh ]; then
       . /vagrant/localenv.sh
     fi
 
     yum install -y ansible git vim bash-completion
-    ansible-playbook -c local -i /vagrant/CRI_XCBC/hosts -l `hostname` /vagrant/CRI_XCBC/site.yaml
+    ansible-playbook -c local -i /vagrant/CRI_XCBC/hosts -l `hostname` /vagrant/CRI_XCBC/site.yaml -b
 
   SHELL