带有 fstab 的 sshfs:由对等方重置连接

10 fstab sshfs

我正在尝试允许我的笔记本电脑(Ubuntu 13.04)通过 SSHFS 访问我的 PC(Lubuntu 13.04)硬盘。我正在使用 RSA 密钥进行连接。

如果我在终端中输入它,它工作得很好:

sshfs my-PC:/a_folder /media/a_folder
Run Code Online (Sandbox Code Playgroud)

但是我希望它在我启动笔记本电脑时自动安装。所以我把自己加入了保险丝组:

sudo adduser mynickname fuse
Run Code Online (Sandbox Code Playgroud)

我将以下行添加到我的 fstab 文件中:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev 0 0
Run Code Online (Sandbox Code Playgroud)

当我启动笔记本电脑时,a_folder 出现在设备列表中,但未安装。当我尝试通过 Nautilus 访问它时,它显示以下错误:

mount: only root can mount sshfs#mynickname@my-PC:/a_folder on /media/a_folder
Run Code Online (Sandbox Code Playgroud)

如果我尝试,我会得到同样的错误

mount /media/a_folder
Run Code Online (Sandbox Code Playgroud)

在一个终端。

如果我尝试

sudo mount /media/a_folder
Run Code Online (Sandbox Code Playgroud)

我得到

read: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)

我尝试在 fstab 条目中添加“allow_other”作为选项,并在 /etc/fuse.conf 中取消注释相关行,但它没有改变任何内容。

用户“mynickname”是文件夹 /media/a_folder 的所有者,并具有 rwx 权限。

我在互联网上查看了许多关于有类似问题的人的帖子,但到目前为止没有任何效果。通常,人们甚至做不到

sshfs my-PC:/a_folder /media/a_folder
Run Code Online (Sandbox Code Playgroud)

没有出现错误,而这在我的笔记本电脑上运行良好。

任何见解和提示将不胜感激!谢谢。

编辑:我不久前解决了这个问题,但我忘了更新这篇文章。所以这是我的 fstab 中的内容:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse noauto,_netdev,idmap=user,user,default_permissions 0 0
Run Code Online (Sandbox Code Playgroud)

如果我记得的话,要添加的关键选项是 default_permissions。我必须将 mynickname 添加到我的 PC 上属于 /a_folder/ 的组中。

ear*_*Lon 8

您遇到的问题是您的普通用户对您的身份文件进行了正确设置,而 root 用户不知道要使用什么 ssh 密钥。

您可以通过告诉 fstab 在尝试连接时使用什么身份文件/ssh 密钥来解决此问题:

sshfs#user@host:/mnt/whatever/ /mnt/whatever/        fuse    user,_netdev,reconnect,uid=1000,gid=1000,IdentityFile=/home/USER/.ssh/KEYFILE,idmap=user,allow_other  0   2
Run Code Online (Sandbox Code Playgroud)

  • 所以这两种方法都行不通。还是一样的错误。对于配置文件,我尝试指定正确的主机:用户、主机名(IP 和名称都尝试过)、身份文件。但它也没有奏效。所以我现在最终要做的是在启动应用程序中添加命令 sshfs my-PC:/a_folder /media/a_folder 。它不像使用 fstab 那样干净,但它现在工作得很好。感谢您的帮助和建议!如果你想到了别的东西,请随时分享,我会很感激的! (2认同)

小智 5

要获得真正的调试输出,您需要将sshfs_debugdebug选项添加到挂载:

sshfs#mynickname@my-PC:/a_folder /media/a_folder fuse defaults,idmap=user,_netdev,debug,sshfs_debug 0 0
Run Code Online (Sandbox Code Playgroud)

有了这个,您将获得大量调试信息来帮助您:

$ sudo mount -a
SSHFS version 2.5
FUSE library version: 2.9.2
nullpath_ok: 0
nopath: 0
utime_omit_ok: 0
executing <ssh> <-x> <-a> <-oClearAllForwardings=yes> <-2> <user@box> <-s> <sftp>
user@box's password: 
Server version: 3
Extension: posix-rename@openssh.com <1>
Extension: statvfs@openssh.com <2>
Extension: fstatvfs@openssh.com <2>
Extension: hardlink@openssh.com <1>
Extension: fsync@openssh.com <1>
unique: 1, opcode: INIT (26), nodeid: 0, insize: 56, pid: 0
INIT: 7.22
flags=0x0000f7fb
max_readahead=0x00020000
remote_uid = 1001
   INIT: 7.19
   flags=0x00000011
   max_readahead=0x00020000
   max_write=0x00020000
   max_background=0
   congestion_threshold=0
   unique: 1, success, outsize: 40
unique: 2, opcode: STATFS (17), nodeid: 1, insize: 40, pid: 2771
unique: 3, opcode: LOOKUP (1), nodeid: 1, insize: 47, pid: 3371
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我发现我的机器只列在 中.ssh/config,所以 root 无法解析。

顺便说一句,您需要设置 uid 和 gid,因为idmap=user似乎只适用于当前用户,在这种情况下是 root。