首页 > 代码库 > 如何设置vagrant的共享文件夹方式为sshfs

如何设置vagrant的共享文件夹方式为sshfs

默认的vagrant虚拟机里的共享文件夹速度是很慢的,比如在一个有很多代码的项目中生成tags:ctags -Rf .tags时,或者用ag来找某一个字符串:ag hello_world时,就会很慢。改为nfs速度会提升些,但绝没有sshfs的方式快。

使用sshfs共享的话,有两种方法,一种是最简单最快的,就是安装vagrant的sshfs插件:http://github.com/fabiokr/vagrant-sshfs

不过,我试这方法时因为网速原因,安装不了,所以就自己摸索出第二种比较麻烦的方法:

首先在你的vagrant虚拟机中安装sshfs:ubuntu:sudo apt-get install sshfs

然后运行以下命令:

sudo chmod 0644 /etc/fuse.conf

sudo echo ‘user_allow_other‘ >> /etc/fuse.conf

然后在物理主机中,将AuthorizedKeysFile  .ssh/authorized_keys和RSAAuthentication以及PubkeyAuthentication在 /etc/ssh/sshd_config 所在的行中取消注释(mac的sshd_config在/etc下)

然后重启sshd服务:service ssh restart (mac中不需要重启)

接着,在物理主机中运行:

cd ~/.ssh

ssh-keygen -t rsa -N ""

cat id_rsa.pub >> authorized_keys

最后,打开vagrant的Vagrantfile,在最后加上:

Vagrant.configure("2") do |config|
	config.vm.provision "shell" do |s|
          s.inline = "killall ssh-agent &> /dev/null; echo"
	  s.inline = "eval $(ssh-agent -s) &> /dev/null; echo"
	  s.inline = "ssh-add /home/vagrant/.ssh/id_rsa &> /dev/null; echo"
	  s.inline = "fusermount -u /home/vagrant/Code &> /dev/null; echo"
	  s.inline = "sshfs -o allow_other wenzai@192.168.10.1:Code /home/vagrant/Code/ &> /dev/null; echo"
end
注意要将wenzai@192.168.10.1:Code /home/vagrant/Code/修改为自己机子对应的ip和要共享的文件夹吧

如何设置vagrant的共享文件夹方式为sshfs