2008年3月30日星期日

[转载]sshfs把远程主机的文件系统映射到本地的目录中

授权方式:署名,非商业用途,保持一致,转载时请务必以超链接( http://www.fwolf.com/blog/post/329 )的形式标明文章原始出处和作者信息及本声明。

windows之外的世界比想像中要大得多呢,几乎天天都在用ssh,却到今天才知道有sshfs这个好东西,前几天还在为ZendStudio可以远程编辑文件欣喜,惭愧啊,终于有比vi scp://hostname//path/to/file更方便的方式了。

sshfs,就是可以把ssh连接到的主机资源,映射到本机的文件系统当中,然后用户可以像操作本地文件一样操作,而实际的文件改动将通过ssh传输到远程主机当中。类似于mount了一个windows共享目录,或者另外一台linux主机的samba共享,或者是nfs共享,只是“共享协议”变成了ssh通道罢了。

ubuntu源中已经包含了sshfs了,以及所需的fuse包,直接apt安装就可以了,一共是三个包:“fuse-utils libfuse2 sshfs”,不大,加起来才179k。安装的时候会自动创建用户组fuse,要使用sshfs的用户需要先加到这个用户组里才行(记得完成后还要重新登录),不然会没有权限执行fusermount:

fuse: failed to exec fusermount: Permission denied

使用就简单的多了,一般来说,连接远程主机到本地用户:

sshfs user@hostname:path mount_point

需要输密码就输密码,当然配置成自动登录的ssh更方便了。用完之后要umount,可以:

fusemount -u mount_point

都是在普通用户非sudo的环境下使用,非常方便的。如果想每次开机都自动挂载,可以在/etc/fstab中加入:

sshfs#user@hostname:path mount_point fuse defaults,auto,allow_other 0 0

这就要求必须先把ssh自动登录配置好了,让root用户能够使用user身份登录远程主机,另外allow_other这个参数很重要,没有这个参数的话,挂载过来的目录只有root能够访问。

关于自动挂载,参考文章中andot用脚本实现的方式也不错,建议大家看看去。

3 条评论:

  1. 呵呵,我是gnuboy,就是linuxboy_007,你哪里有ssh主机可以控制阿?我经常进来看看,呵呵。还有,帮我把你这里的自家站修改一下吧,我改成gnuboy.vicp.net这个地址了,刚刚浏览网页才发现。

    回复删除
  2. 这个地方没搞明白 :sshfs user@hostname:path mount_point 我如果要挂在我的根目录,是直接输入/ 还是把我的根目录在远程主机上的完整目录写出来?谢谢

    回复删除
  3. 你说的是 后面的挂载点吗?不明白你的疑问

    回复删除