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用脚本实现的方式也不错,建议大家看看去。
参考:
- 老外经验谈使用sshfs装备远程文件系统
- SSH入门
- 在debian下通过sshfs/shfs挂载远程主机文件系统
- Home Server
- FUSE简介
- FUSE:用户空间文件系统
- Mounting a fuse Filesystem from /etc/fstab
![[Bloglines]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/bloglines.png)
![[del.icio.us]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/delicious.png)
![[Digg]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/digg.png)
![[diigo]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/diigo.png)
![[Facebook]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/facebook.png)
![[Google]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/google.png)
![[MySpace]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/myspace.png)
![[Reddit]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/reddit.png)
![[Slashdot]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/slashdot.png)
![[Email]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/email.png)
June 4th, 2007 at 12:07:52
我没太看明白sshfs的好处是什么。映射到本地目录更方便浏览和编辑?
我一般如果是复制文件、是直接用ubuntu中 位置-连接到服务器 然后用ssh连接到我要访问的服务器,之后在密钥环中保存密码就可以了。
如果给远端服务器建立一个alias,这样就可以scp file.txt server 应该更方便。
在terminal中我还是用key登录。之后要做什么整体系统的操作用sudo,再输入一下密码。大部分操作都是普通用户就可以了。
我没有开启root帐号。
[Reply]
June 5th, 2007 at 1:30:03
不往fstab里面放,就不用动root帐号的
sshfs的好处就是,只要你有远程主机的ssh权限,
就可以把上面的目录映射为本机的一个目录
这样你不仅用cp达到以前scp的目的
而且其他的应用程序,比如gedit,gimp什么的
就可以像访问本机文件一样直接访问远程服务器上的文件了。
当然,使用不频繁的情况下,ssh依然是最简便的。
[Reply]
June 8th, 2007 at 5:54:18
请教,为什么我把用户名加到 fuse 组里,还会出现:
fuse: failed to exec fusermount: Permission denied
错误提示呢?
[Reply]
June 8th, 2007 at 6:11:43
请教为什么我把用户名加入到了 fuse 组中,依然出现错误?
fuse: failed to exec fusermount: Permission denied
[Reply]
June 8th, 2007 at 9:31:45
@Michael
需要重启一下才行,不然用户的组设置无效的
[Reply]
June 14th, 2007 at 16:34:36
另外狼兄你知不知道为什么我把自己加到 fuse 组里:
usermod -G fuse michael
但这一句一执行,虽然我被加入到了 fuse 里,但直接导致 michael 不在 /etc/sudoers 里了,必须要手动加入才能再执行 sudo 命令,我试了几次都是这样,为什么呢?
[Reply]
June 14th, 2007 at 21:11:23
只有admin组的用户才能使用sudo
所以你那样设置就等于把user从admin组去掉了
(ubuntu默认安装会把第一个普通用户加到admin组)
然后当然就无法sudo了啊
我都是直接修改group文件的,省事
[Reply]
June 15th, 2007 at 7:25:12
直接修改 group 文件真是个好办法,看来我还是太不熟悉 Linux 啊。
[Reply]
July 12th, 2007 at 7:28:33
[...] sshfs把远程主机的文件系统映射到本地的目录中 - Fwolf’s Blog sshfs,就是可以把ssh连接到的主机资源,映射到本机的文件系统当中,然后用户可以像操作本地文件一样操作,而实际的文件改动将通过ssh传输到远程主机当中。 (tags: ssh 映射 共享 linux) [...]
September 22nd, 2007 at 22:43:36
Linux的东西不太熟
[Reply]
March 18th, 2008 at 8:38:13
Michael:
adduser username groupname 这样比 usermod 安全点,只会将一个已有用户加入一个已有组,不会把用户从原所在组(很多个)中移除。
[Reply]
March 29th, 2008 at 23:10:49
[...] linux 授权方式:署名,非商业用途,保持一致,转载时请务必以超链接( http://www.fwolf.com/blog/post/329 [...]