autofs 无法使用 sshfs - fuse 挂载远程驱动器

autofs 无法使用 sshfs - fuse 挂载远程驱动器

我目前正在开发一个应用程序,我需要从远程位置检索一些文件,而这些文件只能通过 ssh 访问。由于我需要自动挂载该存储库,因此我尝试为其设置一个 autofs(无法将其放入 fstab,因为 fstab 在网络故障后不会将其重新挂载)。

不幸的是,我在配置它时遇到了一些问题。尽管我搜索了很久,但我还是找不到任何关于我的问题的线索……所以我来了。

基本上,我正在尝试自动完成我以前所做的事情:

sshfs [email protected]: /mnt/mylocalrepo -o allow_other 

我需要为 pid 为 502 的 tomcat 用户提供此功能。为了做到这一点,这是我的 auto.master:

# $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $ 
/misc   /etc/auto.misc
/net    -hosts
/mnt    /etc/auto.sshfs --timeout=30, --ghost,  --debug

和我的 auto.sshfs:

mylocalrepo -fstype=fuse,uid=502,gid=502,IdentityFile=/root/.ssh/myRsaPrivateKey,ro,allow_other :sshfs\#[email protected]\:

我还在 /etc/sysconfg/autofs 中将输出级别设置为“debug”。

然后,/etc/init.d/autofs restart.

不幸的是,什么也没有发生......日志显示:

Dec 19 11:52:03 something automount[17018]: handle_packet: type = 3
Dec 19 11:52:03 something automount[17018]: handle_packet_missing_indirect: token 279, name mylocalrepo, request pid 18480
Dec 19 11:52:03 something automount[17018]: attempting to mount entry /mnt/mylocalrepo
Dec 19 11:52:03 something automount[17018]: lookup_mount: lookup(file): looking up mylocalrepo
Dec 19 11:52:03 something automount[17018]: lookup_mount: lookup(file): mylocalrepo -> -fstype=fuse,uid=502,gid=502,IdentityFile=/root/.ssh/myRsaPrivateKey,rw,allow_other :sshfs\#[email protected]\:
Dec 19 11:52:03 something automount[17018]: parse_mount: parse(sun): expanded entry: -fstype=fuse,uid=502,gid=502,IdentityFile=/root/.ssh/myRsaPrivateKey,rw,allow_other :sshfs\#[email protected]\:
Dec 19 11:52:03 something automount[17018]: parse_mount: parse(sun): gathered options: fstype=fuse,uid=502,gid=502,IdentityFile=/root/.ssh/myRsaPrivateKey,rw,allow_other
Dec 19 11:52:03 something automount[17018]: parse_mount: parse(sun): dequote(":sshfs\#[email protected]\:") -> :sshfs#[email protected]:
Dec 19 11:52:03 something automount[17018]: parse_mount: parse(sun): core of entry: options=fstype=fuse,uid=502,gid=502,IdentityFile=/root/.ssh/myRsaPrivateKey,rw,allow_other, loc=:sshfs#[email protected]:
Dec 19 11:52:03 something automount[17018]: sun_mount: parse(sun): mounting root /mnt, mountpoint mylocalrepo, what sshfs#[email protected]:, fstype fuse, options uid=502,gid=502,IdentityFile=/root/.ssh/myRsaPrivateKey,rw,allow_other
Dec 19 11:52:03 something automount[17018]: do_mount: sshfs#[email protected]: /mnt/mylocalrepo type fuse options uid=502,gid=502,IdentityFile=/root/.ssh/myRsaPrivateKey,rw,allow_other using module generic
Dec 19 11:52:03 something automount[17018]: mount_mount: mount(generic): calling mkdir_path /mnt/mylocalrepo
Dec 19 11:52:03 something automount[17018]: mount_mount: mount(generic): calling mount -t fuse -s -o uid=502,gid=502,IdentityFile=/root/.ssh/myRsaPrivateKey,rw,allow_other sshfs#[email protected]: /mnt/mylocalrepo

该仓库位于 /mnt/ 中:

dr-xr-xr-x 2 root root 0 déc 19 11:51 mylocalrepo

但是当我尝试通过 root 用户或通过 tomcat 用户访问它时,经过几分钟的冻结后,我在日志中收到以下信息:

Dec 19 12:16:34 something automount[17018]: mount(generic): failed to mount sshfs#[email protected]: (type fuse) on /mnt/mylocalrepo
Dec 19 12:16:34 something automount[17018]: dev_ioctl_send_fail: token = 280
Dec 19 12:16:34 something automount[17018]: failed to mount /mnt/mylocalrepo
Dec 19 12:16:34 something automount[17018]: handle_packet: type = 3
Dec 19 12:16:34 something automount[17018]: handle_packet_missing_indirect: token 281, name mylocalrepo, request pid 18480
Dec 19 12:16:34 something automount[17018]: attempting to mount entry /mnt/mylocalrepo
Dec 19 12:16:34 something automount[17018]: lookup_mount: lookup(file): looking up mylocalrepo
Dec 19 12:16:34 something automount[17018]: dev_ioctl_send_fail: token = 281
Dec 19 12:16:34 something automount[17018]: failed to mount /mnt/mylocalrepo

因此,如果你们对我的问题有任何想法或建议,或者知道如何找到更多线索,我们非常欢迎!

提前致谢。

我的设置 :

autofs-5.0.1-0.rc2.143.el5_5.6 内核 2.6.18-194.32.1.el5 CentOS 版本 5.5(最终版)

附言:这篇文章几乎与我在 stack overflow 上发表的一篇文章一模一样……但看起来这里不适合提问。所以希望这里适合。如果仍然不适合,请花点时间解释一下原因。

答案1

autofs尝试以 root 用户身份执行挂载。要测试您的设置是否可以正常工作,请以 root 用户身份登录 (su -) 并尝试从 autofs 启动日志中执行挂载行:

`mount -t fuse -s -o uid=502,gid=502,IdentityFile=/root/.ssh/myRsaPrivateKey,rw,allow_other sshfs#[email protected]: /mnt/mylocalrepo`

由于 autofs 确实会执行此操作(它以 root 用户身份使用列出的参数调用 mount),因此它应该会失败并为您提供更合适的调试输出。通常,我发现身份文件的权限问题才是罪魁祸首。

相关内容